javascript传递日期参数给php date函数处理

php 使用 date 函数得出的长整型 和js 得出的长整型老是对不上。困扰了一上午,下午问archer,才把问题解决了。

php存储的时间截是到秒的,js存储的时间截是到毫秒,所以在js处理时,要除以1000。

多简单的一个问题啊,看来以后要多问问,免得浪费时间~~

给个参考:

// create a new javascript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds
var date = new Date(unix_timestamp*1000);;
// hours part from the timestamp
var hours = date.getHours();
// minutes part from the timestamp
var minutes = date.getMinutes();
// seconds part from the timestamp
var seconds = date.getSeconds();

// will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes + ':' + seconds;

关键是 unix_timestamp*1000 这句。

php正常处理即可。

站点缩略图生成器

Website Thumbnail Generator
站点缩略图生成器
出处:http://www.zubrag.com/scripts/website-thumbnail-generator.php
翻译:Fising@phpchina.com http://www.fising.cn
Website Thumb Generator can be used to create website thumbnails for your needs, or start your own website thumbnail generation service.
站点缩略图生成器可以根据需要被用来生成网站缩略图,或者启动你自己的网站缩略图生成服务。
Requirements:
Windows hosting
PHP GD library (installed on most hostings)
Permissions to execute third-party applications (i.e. exe files)
Permissions to execute Internet Explorer
需求:
Windows 主机
PHP GD 扩展库(大多数主机都有安装)
执行第三方应用程序的许可(i.e. exe 文件)
执行 Internet Explorer 的许可
How it works:
Website Thumbnail Generator checks if it already has website image in the cache, and shows it in the browser.
If no cached image then IECapt would be run from the script.
IECapt would run Internet Explorer, grab full sized website screenshot from it, and save image into the folder you specified in script settings.
Then Website Thumbnail Generator would resize image, and show it in the browser.
它如何工作:
站点缩略图生成器检查缓存中是否已经存在站点缩略图,并将之展示到浏览器中。
如果没有缓存图片,IECapt 将由本脚本启动。
IECapt 将运行 Internet Explorer,从中抓取全尺寸屏幕截图并将图片保存到你在脚本中设定的目录中。
然后站点缩略图生成器将重置图片尺寸,将之展示到浏览器中。
Installation:
Download IECapt from http://iecapt.sourceforge.net or from our site: IECapt. Place it in some folder on your server.
Download Website Thumbnail Generator using link below, and unzip it to the same folder.
Update webthumb.php with your settings for thumbnails folder, cache time, default thumbnail size, etc.
安装:
从 http://iecapt.sourceforge.net 或者我们的网站下载 IECapt。将它放到服务器的相同目录下。
从下面的链接下载站点缩略图生成器,解压到相同的目录下。
配置 webthumb.php,设定缩略图存放目录,缓存时间,默认尺寸等。
Sample usage:
webthumb.php?url=http://www.microsoft.com
webthumb.php?url=http://www.thumbnails.com&x=150&y=150
使用范例:
webthumb.php?url=http://www.microsoft.com
webthumb.php?url=http://www.thumbnails.com&x=150&y=150
附:站点缩略图生成器下载地址(附件中也有) http://www.zubrag.com/downloads/webthumb.zip

PHP使用GD库实现截屏

PHP5.2.2以上版本的GD库实现了两个截屏函数 imagegrabscreen 和 imagegrabwindow
分别用于截取整个屏幕和截取某个窗口(同ALT+PrintScreen)的屏幕。
1. 截取整个屏幕 Screenshot

<!--?php $im = imagegrabscreen(); imagepng($im, "myscreenshot.png"); ?-->

2. 截取一个窗口 Capture a window (IE for example)

<!--?php $browser = new COM("InternetExplorer.Application"); $handle = $browser--->HWND;
$browser->Visible = true;
$im = imagegrabwindow($handle);
$browser->Quit();
imagepng($im, "iesnap.png");
$im = imagegrabscreen();
?>

3. 截取IE内容 Capture a window (IE for example) but with its content!

<!--?php $browser = new COM("InternetExplorer.Application"); $handle = $browser--->HWND;
$browser->Visible = true;
$browser->Navigate("http://www.21andy.com/blog/");

/* Still working? */
while ($browser->Busy) {
    com_message_pump(4000);;
}
$im = imagegrabwindow($handle, 0);;
$browser->Quit();
imagepng($im, "iesnap.png");
?>

4. 截取IE的全屏模式 IE in fullscreen mode

<!--?php $browser = new COM("InternetExplorer.Application"); $handle = $browser--->HWND;

$browser->Visible = true;
$browser->FullScreen = true;
$browser->Navigate("http://www.21andy.com/blog/");

/* Is it completely loaded? (be aware of frames!)*/
while ($browser->Busy) {
    com_message_pump(4000);;
}
$im = imagegrabwindow($handle, 0);;
$browser->Quit();
imagepng($im, "iesnap.png");
?>

I use Internet Example Explorer as example, if you like to play more with IE and com, check out the IBrowser2 documentation at MSDN. It should work with any kind of window as long as you give the correct handle (usually $obj->HWND).
php_gd2.dll for 5.2.x thread safe build
php gd image documentation
IE manual (useful to tweak it from com_dotnet
原文: http://www.21andy.com/blog/20071122/684.html

 

php 分割/切割图片

php分割图片,实例1:

<?php
	$width = 950;
	$height = 100;

	$source = @imagecreatefromjpeg( "bg_1.jpg" );
	$source_width = imagesx( $source );
	$source_height = imagesy( $source );

	for( $col = 0; $col < $source_width / $width; $col++)
	{
		for( $row = 0; $row < $source_height / $height; $row++)
		{
			$fn = sprintf( "img%02d_%02d.png", $col, $row );

			echo( "$fn\n" );

			$im = @imagecreatetruecolor( $width, $height );
			imagecopyresized( $im, $source, 0, 0,
				$col * $width, $row * $height, $width, $height,
				$width, $height );
			imagejpeg( $im, $fn );
			imagedestroy( $im );
			}
		}
		?>

分割图片实例2:

<?php
/**
 * 将大图片自动切割成一定比例的小图片
 * 并按照一定规则给小图片命名
 * 
 * 使用方法:
 * 先拷贝大图片到init文件夹下 命名为 1.jpg , 2.jpg .....
 * 浏览器输入地址 img.php
 * 生成小图片于文件夹 temp/zoom1,temp/zoom2.... 下面
 * 
 * 注:需要GD2支持
 * 作者:阿义
 */

header("Cache-Control:no-cache,must-revalidate"); //不使用缓存
//要切割的图片
if (isset($_GET['flag'])) {
    $flag=$_GET['flag'];
}else {
    $flag=1;
}
$filename="init/".$flag.".jpg";//大图文件
$tempdir="temp/zoom".$flag;//小图存放目录

//判断文件是否存在 不存在就切割完毕
if(!file_exists($filename)){
    if($flag==1){
        exit('<p align=center>请确认大图是否位于map/init 下并命名为 1.jpg,2.jpg.......</p>');
    }else{
        exit('<p align=center>图片切割完毕</p>');
    }
}else{
    if(!file_exists($tempdir)) mkdir($tempdir);
    echo "<p align=center>正在切割第".$flag."张大图</p>";
}

/********************************************************************/
$picW=256;                                    //切割小图的宽
$picH=256;                                    //切割小图的高
ini_set( 'memory_limit', '220M' );            //为支持大图片增加内存限制
/********************************************************************/

//获取大图片的属性
list($width, $height, $type, $attr) = getimagesize($filename);
//从$filename创建一新图像
$image = imagecreatefromjpeg($filename);

//循环截取大图中的每一部分,生成小图
for ($i=0;$i<ceil($width/$picW);$i++){
    for ($j=0;$j<ceil($height/$picH);$j++){
        $im = @imagecreatetruecolor($picW, $picH) or die("Cannot Initialize new GD image stream");//创建小图像
        $colBG = imagecolorallocate($im, 255, 255, 255);//白色背景
        imagefill( $im, 0, 0, $colBG );//加白色背景
        $picX=($picW*($i+1))<$width?$picW:($picW+$width-$picW*($i+1));//获取截取图片的宽度
        $picY=($picH*($j+1))<$height?$picH:($picH+$height-$picH*($j+1));//获取截取图片的高度
        imagecopy ( $im, $image, 0, 0, ($picW*$i), ($picH*$j), $picX, $picY );//拷贝大图片的一部分到小图片
        imagejpeg($im,$tempdir."/".$j.",".$i.".jpg",75);//创建小图片到磁盘,输出质量为75(0~100)
    }
}
imagedestroy($im);//释放与 $im 关联的内存
imagedestroy($image);//释放与 $image 关联的内存
//跳转到下一张大图
echo "<script language='JavaScript'>window.location.href='img.php?flag=".($flag+1)."'</script>";
?>

php合并图片实例1

<?php
	$targetsize_x = 4000;
	$targetsize_y = 4000;
	$outfile = "merged.jpg";
	$quality = 100;

	$im = @imagecreatetruecolor( $targetsize_x, $targetsize_y );
	
	$sources = array();
	$dh = opendir( "." );
	while (($file = readdir($dh)) !== false)
	{
		if ( preg_match( "/[.]jpg$/", $file ) &&
			$file!= $outfile )
		{
			$sources []= imagecreatefromjpeg( $file );
		}
	}
	
	$x = 0;
	$y = 0;
	$index = 0;
	while( true )
	{
		$width = imagesx( $sources[ $index ] );
		$height = imagesy( $sources[ $index ] );
		
		imagecopy( $im, $sources[ $index ],
			$x, $y, 0, 0, $width, $height );
			
		$x += $width;
		if ( $x >= $targetsize_x )
		{
			$x = 0;
			$y += $height;
			if ( $y >= $targetsize_y )
				break;
		}

		$index += 1;
		if ( $index >= count( $sources ) )
			$index = 0;
	}

	imagejpeg( $im, $outfile, $quality );

	imagedestroy( $im );
	?>

工作总结

平时的一些积累,遇到的一些问题,通过不断的总结,才能逐步提高。

1、在小行高下文字无法真正垂直居中。

之前在做TX面试题的时候,也遇到了这个问题,当时在IE8下,设置

height:15px; line-height:15px;background:#F00

IE8下,明显没有居中,字体偏上了。之后通过设置字体为“宋体”解决了。
搜索了下发现这篇相关的文章,分享之:小字体小行高兼容性分析及差异解决办法

Google Javascript 编码风格指南

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml

这条链接一直放在博客的回收站里,没发出来。今天无意发现,就干脆发出来吧。

换了工作,可能在一段时间里,都不会太深入的研究JS了,就当做是一种知识储备吧,毕竟学过的东西,以后用起来,上手也是很容易的。

Google的Javascript风格还是有很多地方值得学习的,收藏之~~以后用得上。

[转]Web开发人员速查卡

无论你是多牛的程序员,你都无论记住所有的东西。而很多时候,查找某些知识又比较费事。所以,网上有很多Cheat Sheets,翻译成小抄也好 ,速查卡也好,总之就是帮你节省 时间的。今天转一篇开发人员的速查卡,源文在这里。下面的文章我就不翻译了。

HTML Cheat Sheet

clip_image002

CSS Cheat Sheets

clip_image004

Adobe Flash Cheat Sheets

clip_image006

ASP Cheat Sheets

clip_image008

PHP Cheat Sheets

clip_image010

MySQL Cheat Sheets

clip_image011

JavaScript Cheat Sheets

clip_image013

jQuery Cheat Sheets

clip_image015

Unicode Cheat Sheets

clip_image017

XML Cheat Sheets

clip_image019

mod_rewrite and .htaccess Cheat Sheets

clip_image021

转自:http://news.cnblogs.com/n/91219/

javascript 对象数组排序

javascript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。

其基本的用法就不说了,先看个简单的排序例子:

//Sort alphabetically and ascending:
var myarray=["Bob", "Bully", "Amy"]
myarray.sort() //Array now becomes ["Amy", "Bob", "Bully"]

数组直接调用sort()后,数组按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。

再来看看数字的排序:

//Sort numerically and ascending:
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){return a - b}) //Array now becomes [7, 8, 25, 41]

sort(fun)接受了个排序规则函数,这个函数将比较2个数字的大小。而我们的对象数组排序,实际上原理也是一样的。

对于对象数组排序,我们先写一个构造比较函数的函数:

//by函数接受一个成员名字符串做为参数
//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数
var by = function(name){
	return function(o, p){
		var a, b;
		if (typeof o === "object" && typeof p === "object" && o && p) {
			a = o[name];
			b = p[name];
			if (a === b) {
				return 0;
			}
			if (typeof a === typeof b) {
				return a < b ? -1 : 1;
			}
			return typeof a < typeof b ? -1 : 1;
		}
		else {
			throw ("error");
		}
	}
}

要排序的数组:

var employees=[]
employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}

直接调用函数:

employees.sort(by("age"));

到这里,对象数组排序就算基本实现了。那如何实现多个键值排序呢?意思就是先是对age排序,如果age相同,再比较name。

这时,我们可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。

//by函数接受一个成员名字符串和一个可选的次要比较函数做为参数
//并返回一个可以用来包含该成员的对象数组进行排序的比较函数
//当o[age] 和 p[age] 相等时,次要比较函数被用来决出高下
var by = function(name,minor){
	return function(o,p){
		var a,b;
		if(o && p && typeof o === 'object' && typeof p ==='object'){
			a = o[name];
			b = p[name];
			if(a === b){
				return typeof minor === 'function' ? minor(o,p):0;
			}
			if(typeof a === typeof b){
				return a <b ? -1:1;
			}
			return typeof a < typeof b ? -1 : 1;
		}else{
			thro("error");
		}
	}
}

employees.sort(by('age',by('name')));

好了,现在可以放心使用了。如果看不懂,可直接copy 这个by函数到你的应用里面,直接调用即可。

在IE下去除 hr 标签的border样式

在IE下,我们可以这样实现

/* ------- EMBEDDED ------- */
<!--[if IE]>
<style type="text/css">
#primary-content  hr {
display : list-item;
list-style : url(/assets/images/wide-rule.gif) inside;
filter : alpha(opacity=0);;
margin-left: -10px;
width : 0;
}
</style>
<![endif]-->

在非IE下则很方便,可以直接用border:0搞定。

/* ----- STYLESHEET ----- */

hr{
background:url(short-rule.gif) repeat-x top left;
border: 0;
}