七、日期与时间
- 设置时区
date_default_timezone_set()
:设置时区
- 获取当前的 Unix 时间戳
time()
:获取当前的 Unix 时间戳
- 获取指定时间的 Unix 时间戳
mktime(hour, minute, second, month, day, year)
:获取指定时间的 Unix 时间戳
- 从 Unix 时间戳取得时间日期信息
date()
:格式化一个本地时间/日期- date ( string
$format
[, int$timestamp
] ) : string format
:Y-m-d G:i:s
- date ( string
- 获取 Unix 时间戳和微秒级
microtime()
:回当前 Unix 时间戳和微秒数
八、图像处理
-
创建图像
-
绘制图像
-
输出图像
- header() 函数注意点:在该函数之前,不能输出任何内容
-
释放资源
<?php $width = 100; $height = 100; header("Content-type:image/jpeg");//默认为header("Content-type:text/html") $img = imagecreatetruecolor($width, $height);//新建一个长和高为100的真彩图像。 $color2 = imagecolorallocate($img, 255, 255, 255);//分配颜色,后面三个参数为RGB imagefill($img, 0, 0, $color2);//区域填充,在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。 imagejpeg($img);//输出图象到浏览器或文件 imagedestroy($img);//释放资源 ?>
-
设计验证码
<?php header("Content-type:image/jpeg"); $width = 120; $height = 40; //方法一:利用数组 $element = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'); $string = ''; for($i=0; $i<5; $i++){ $string .= $element[rand(0, count($element)-1)]; }//随机生成五个字符 //方法二:利用ASCII码 $string = ''; for($i=0; strlen($string)<5; $i++){ $t = rand(48, 122); if(($t>=58&$t<=64)|($t>=91&$t<=96)){ continue; }else{ $string .= chr($t); } }//随机生成五个字符 $image = imagecreatetruecolor($width, $height);//新建一个图像 $colorBg = imagecolorallocate($image, rand(200, 255), rand(200, 255), rand(200, 255));//为一幅图像分配颜色 $colorBor = imagecolorallocate($image, rand(200, 255), rand(200, 255), rand(200, 255)); $colorStr = imagecolorallocate($image, rand(100, 200), rand(100, 200), rand(100, 200)); imagefill($image, 0, 0, $colorBg);//给图片上色 imagerectangle($image, 0, 0, $width-1, $height-1, $colorBor);//生成一个矩形 for($i = 0; $i<100; $i++){ imagesetpixel($image, rand(0, $width-1), rand(0, $height-1), imagecolorallocate($image, 0, 0, 0));//生成一像素的小圆点 } for($i = 0; $i<3; $i++){ imageline($image, rand(0, $width/2), rand(0, $height/2), rand($width/2, $width), rand($height, $height/2), imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100))); } // imagestring($image, 1, rand(0,5), rand(0,5), "ABCD", $colorStr);//水平地画一行字符串 imagettftext($image, 20, rand(-5, 5), rand(10, 20), rand(30, 35), $colorStr, 'D:\wamp64\www\gd\ARLRDBD.TTF', $string);//用 TrueType 字体向图像写入文本 imagejpeg($image);//输出图像 imagedestroy($image); ?>
-
水印
<?php header('Content-type:image/jpeg'); $image = imagecreatefromjpeg('images\22.jpg');//由文件或 URL 创建一个新图象 $src_im = imagecreatefromjpeg('images\33.jpg'); $color = imagecolorallocate($image, 255, 255, 255); $imageWidth = imagesx($image);//获取图像的长 $imageHeight = imagesy($image);//获取图像的高 $src_imWidth = imagesx($src_im);//获取图像的长 $src_imHeight = imagesy($src_im);//获取图像的高 //getimagesize('images\22.jpg');//获取图像的大小,返回一个数组,下标0为长,下标1为高 $position = imagettfbbox(100, 45, 'D:\wamp64\www\gd\font\ARLRDBD.TTF', '17046112');//取得使用 TrueType 字体的文本的范围 $stringWidth = $position[2] - $position[0];// 得到字符串的长 $stringHeight = $position[3] - $position[5];// 得到字符串的高 // 文字水印 imagettftext($image, 100, 45, $imageWidth-$stringWidth*2, $imageHeight-$stringHeight*2, $color, 'D:\wamp64\www\gd\font\ARLRDBD.TTF', '17046112'); /* * 图片水印 * imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h); * 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。 * $dst_im:目标图像资源 * $src_im:水印图像资源 * $dst_x:所要拷贝到目标图像的X坐标 * $dst_y:所要拷贝到目标图像的Y坐标 * $src_x:从水印图像的X坐标为$src_x的位置开始拷贝 * $src_x:从水印图像的Y坐标为$src_y的位置开始拷贝 * $src_w:索要拷贝的水印图像的长度 * $src_w:所要拷贝的水印图像的高度 * imagecopymerge($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct); * $pct:表示透明度,数值越小越透明 * */ imagecopy($image, $src_im, $imageWidth-1-$src_imWidth-30, $imageHeight-1-$src_imHeight-30, 0, 0, $src_imWidth, $src_imHeight); imagecopymerge($image, $src_im, $imageWidth-1-$src_imWidth-700, $imageHeight-1-$src_imHeight-500, 0, 0, $src_imWidth, $src_imHeight,40); imagejpeg($image);//输出图象到浏览器或文件 imagedestroy($image);//释放资源 ?>
-
缩放与裁剪
<?php header('Content-type:image/jpeg'); $image = imagecreatefromjpeg('images/22.jpg'); $width=500; $imageWidth=imagesx($image); $imageHeight=imagesy($image); $height=$width/$imageWidth*$imageHeight; $dst_image = imagecreatetruecolor($width, $height); /* * $image1 = imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); * imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。 * dst_image:目标图象连接资源。 * src_image:源图象连接资源。 * dst_x:目标 X 坐标点。 * dst_y:目标 Y 坐标点。 * src_x:源的 X 坐标点。 * src_y:源的 Y 坐标点。 * dst_w:目标宽度。 * dst_h:目标高度。 * src_w:源图象的宽度。 * src_h:源图象的高度。 * */ imagecopyresampled($dst_image, $image, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight); imagejpeg($dst_image); imagejpeg($dst_image, 'images/23.jpg'); imagedestroy($image); imagedestroy($dst_image); ?>