09 PHP与图像操作
零点起飞学PHP之图像处理

1.获取图像的尺寸
1.获取图像的尺寸
【示例10-7】演示使用imagesx和imagesy函数获取图像的宽度和高度。运行结果就输出了图像的大小信息。下面我们再来使用getimagesize函数获取图像文件的信息。【示例10-8】演示使用getimagesize函数获图像文件的信息。注意:getimagesize函数会直接获取图像文件的信息,无需使用打开的文件资源。从运行结果中我们可以看到getimagesize函数返回的数组信息,我们依次来介绍各个数组元素表示的信息:元素0:表示图像文件的宽度;元素1:表示图像文件的高度;元素2:表示图像文件的格式。可能值为1~16,主要的值有:1为GIF格式(.gif)、2为JPEG/JPG格式(.jpeg/.jpg)、3为PNG格式(.png);元素3:表示图像文件的宽度和高度,可以用于HTML标签的参数;元素bits:表示每种颜色的位数;元素mime:表示图像的MIME类型。
5.绘制椭圆
6绘制弧线
绘制弧线对应的两个函数为imagearc和imagefilledarc函数。imagearc函数用来绘制弧线,imagefilledarc函数用来绘制弧线并填充。imagearc和imagefilledarc函数的原型如下:bool imagearc ( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color )bool imagefilledarc ( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color , int $style )参数image即为打开的图像资源;参数cx和cy用来规定弧线的圆心;参数w用来规定弧线的宽度;参数h用来规定弧线的高度;参数s用来规定弧线的开始角度;参数e用来规定弧线的结束角度。imagearc函数的color参数用来规定弧线的颜色。imagearc用来规定对圆弧区域的填充色;参数style用来规定填充和绘制的风格,可选的参数及说明如下:IMG_ARC_PIE:产生圆形边界;IMG_ARC_CHORD:用直线连接起始和结束点并填充到圆心的区域;IMG_ARC_NOFILL:弧或弦只有轮廓,不填充;IMG_ARC_EDGED:直线将起始和结束点与中心点相连。以上这些参数可以使用按位或组合起来实现多个效果。
PHP图像处理函数

1、imagecreate -- 新建一个基于调色板的图像resource imagecreate ( int x_size, int y_size )imagecreate() 返回一个图像标识符,代表了一幅大小为x_size 和y_size 的空白图像。
2、imagecreatetruecolor -- 新建一个真彩色图像resource imagecreatetruecolor ( int x_size, int y_size )imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为x_size 和y_size 的黑色图像。
3、imagecolorallocate -- 为一幅图像分配颜色int imagecolorallocate ( resource image, int red, int green, int blue )imagecolorallocate() 返回一个标识符,代表了由给定的RGB 成分组成的颜色。
red,green 和blue 分别是所需要的颜色的红,绿,蓝成分。
这些参数是0 到255 的整数或者十六进制的0x00 到0xFF。
imagecolorallocate() 必须被调用以创建每一种用在image 所代表的图像中的颜色。
4、imagesetpixel -- 画一个单一像素bool imagesetpixel ( resource image, int x, int y, int color )imagesetpixel() 在image 图像中用color 颜色在x,y 坐标(图像左上角为0,0)上画一个点。
5、imagestring -- 水平地画一行字符串bool imagestring ( resource image, int font, int x, int y, string s, int col )imagestring() 用col 颜色将字符串s 画到image 所代表的图像的x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为0,0)。
PHP图像处理之imagecreate、imagedestroy函数介绍

PHP图像处理之imagecreate、imagedestroy函数介绍使⽤PHP的GD库处理图像时,必须对画布进⾏管理。
创建画布就是在内存中开辟⼀块存储区域,以后在PHP中对图像的所有操作都是基于这个图布处理的,图布就是⼀个图像资源。
在PHP中,可以使⽤imagecrete()和imageCreateTrueColor()两个函数创建指定的画布。
这两个函数的作⽤是⼀致的,都是建⽴⼀个指定⼤⼩的画布,他们的原型如下所⽰:复制代码代码如下: resource imagecreate(int $x_size,int $y_size) //新建⼀个基于调⾊板的图像 resource imagecreatetruecolor(int $x_size,int $y_size) //新建⼀个真彩⾊图像 虽然这两个函数都可以创建⼀个新的画布,但各⾃能够容纳的颜⾊的总数是不同的。
imageCreate()函数可以创建⼀个基于普通调⾊板的图像,通常⽀持256⾊。
⽽imageCreateTrueColor()函数可以创建⼀个真彩⾊图像,但该函数不能⽤于GIF⽂件格式。
当画布创建后,返回⼀个图像标识符,代表了⼀幅宽度为$x_size和⾼度为$y_size的空⽩图像引⽤句柄。
在后续的绘图过程中,都需要使⽤这个资源类型的句柄。
例如,可以通过调⽤imagesx()和imagesy()两个函数获取图像的⼤⼩。
代码如下所⽰:复制代码代码如下:<?php$img = imagecreatetruecolor(300,200);//创建⼀个300*200的画布echo imagesx($img);//输出画布宽度300echo imagesy($img);//输出画布⾼度200> 另外,画布的引⽤句柄如果不再使⽤,⼀定要将这个资源销毁,释放内存与该图像的存储单元。
画布的销毁过程⾮常简单,调⽤imagedestroy()函数就可以实现。
PHP处理图片例子

PHP处理图片例子图片的生成和显示//从文件创建图像$image=imagecreatefrom('ALIM2382.JPG');//获得实际图片的宽高list($width, $height ) = getimagesize('ALIM2382.JPG');//获得宽高的比率$ratio = Resize($height ,$width);//新的宽高$new_width = $width*$ratio;$new_height = $height*$ratio;//新建一个真彩色图像$newim = imagecreatetruecolor($new_width, $new_height);//重采样拷贝部分图像并调整大小imagecopyresampled($newim, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);//生成图片make_image($newim,'bb.jpg');//输出图片OutputImg($newim,'bb.jpg');//销毁图片imagedestroy($newim);die;//生成图片效果请参考‘我的相册’。
//返回文件的扩展名function extension($filename){$img_ext="";$path_parts = pathinfo($filename);$img_ext=$path_parts["extension"];return $img_ext;}//从文件新建一图像function imagecreatefrom($filename) {$image='';case "jpg":case "JPG":case "jpeg":case "JPEG":$image = @imagecreatefromjpeg($filename); break;case "gif":case "GIF":$image = @imagecreatefromgif($filename); break;case "png":case "PNG":$image = @imagecreatefrompng($filename); break;}return $image;}//生成图片function make_image($im,$filename){switch(extension($filename)){case "jpg":case "JPG":case "jpeg":case "JPEG":imagejpeg($im,$filename);break;case "gif":case "GIF":imagegif($im,$filename);break;case "png":case "PNG":imagepng($im,$filename);break;}return true;}//输出图片function OutputImg($newim,$imgname){case "jpg":case "JPG":case "jpeg":case "JPEG":header('Content-type: image/jpeg');imagejpeg($newim);break;case "gif":case "GIF":header('Content-type: image/gif');imagegif($newim);break;case "png":case "PNG":header('Content-type: image/png');imagepng($newim);break;case "bmp":case "BMP":header('Content-type: image/wbmp');imagewbmp($newim);break;}}//获得图片宽高的比率function Resize( $height,$width, $maxwidth=400, $maxheight=400){ $RESIZEWIDTH=$RESIZEHEIGHT=false;if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){if($maxwidth && $width > $maxwidth){$widthratio = $maxwidth/$width;$RESIZEWIDTH=true;}if($maxheight && $height > $maxheight){$heightratio = $maxheight/$height;$RESIZEHEIGHT=true;}if($RESIZEWIDTH && $RESIZEHEIGHT){if($widthratio < $heightratio){$ratio = $widthratio;}else{$ratio = $heightratio;}}elseif($RESIZEWIDTH){ $ratio = $widthratio; }elseif($RESIZEHEIGHT){ $ratio = $heightratio; }}else{$ratio=1;}return $ratio;}。
PHP图像操作教程:3D图、缩放、旋转、裁剪、添加水印

图片操作在网站的应用相当广范,特别是现在互联网高度发达,很多内容都是以图片来显示,现在我们来讲讲用php来操作上传的图片,3D图片绘制、图片缩放、图片旋转、图片裁剪、图片添加水印。
1、利用php gd库的函数绘制3D扇形统计图代码如下:<?phpheader("content-type","text/html;charset=utf-8");/*扇形统计图*/$image = imagecreatetruecolor(100, 100); /*创建画布*//*设置画布需要的颜色*/$white = imagecolorallocate($image,0xff,0xff,0xff);$gray = imagecolorallocate($image, 0xc0, 0xc0, 0xc0);$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);$navy = imagecolorallocate($image, 0x00, 0x00, 0x80);$darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);$red = imagecolorallocate($image, 0xff, 0x00, 0x00);$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);/*填充背景色*/imagefill($image, 0, 0, $white);/*3D制作*/for($i = 60; $i > 50; $i--){imagefilledarc($image, 50, $i, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);imagefilledarc($image, 50, $i, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);imagefilledarc($image, 50, $i, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);}/*画椭圆弧并填充*/imagefilledarc($image, 50, 50, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE);imagefilledarc($image, 50, 50, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE);imagefilledarc($image, 50, 50, 100, 50, 75, 200, $darkred, IMG_ARC_PIE);/*画字符串*/imagestring($image, 3, 15, 55, "30%", $white);imagestring($image, 3, 45, 35, "60%", $white);imagestring($image, 3, 60, 60, "10%", $white);/*输出图像*/header("content-type:image/png");imagepng($image);/*释放资源*/imagedestroy($image);?>2、对图片进行缩放代码如下:<div><h4>原图大小</h4><img src="1.png" style="border:1px solid red;">< /div>< ?phpheader("content-type","text/html;charset=utf-8");/**图片缩放string $filename 图片的urlint $width 设置图片缩放的最大宽度int $height 设置图片缩放的最大高度*/function thumb($filename,$width=130,$height=130){/*获取原图的大小*/list($width_orig,$height_orig) = getimagesize($filename);/*根据参数$width和$height,换算出等比例的高度和宽度*/if($width && ($width_orig < $height_orig)){$width = ($height / $height_orig) * $width_orig;}else{$height = ($width / $width_orig) * $height_orig;}/*以新的大小创建画布*/$image_p = imagecreatetruecolor($width, $height);/*获取图像资源*/$image = imagecreatefrompng($filename);/*使用imagecopyresampled缩放*/imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);/*保存缩放后的图片和命名*/imagepng($image_p,'test.png');/*释放资源*/imagedestroy($image_p);imagedestroy($image);}/*调用函数*/thumb('1.png');?>< div><h4>缩放后的大小</h4><img src="test.png" style="border:1px solid red;">< /div>3、PHP对图像的裁剪代码如下:<div><h4>裁剪之前</h4><img src="1.png" style="border:1px solid red;">< /div>< ?phpheader("content-type","text/html;charset=utf-8");/**图片裁剪string $filename 图片的urlint $width 图片裁剪宽度int $height 图片裁剪高度int $x 裁剪图片左边开始的位置int $y 裁剪图片顶边开始的位置*/function cut($filename,$x,$y,$width,$height){/*获取图像资源,需要裁剪的图片*/$image = imagecreatefrompng($filename);/*以新的大小创建画布,保存裁剪后的图片*/$image_p = imagecreatetruecolor($width, $height);/*使用imagecopyresampled缩放*/imagecopyresampled($image_p, $image, 0, 0, $x, $y, $width, $height, $width, $height); /*保存裁剪后的图片和命名*/imagepng($image_p,'test1.png');/*释放资源*/imagedestroy($image_p);imagedestroy($image);}/*调用函数*/cut('1.png',20,20,80,80);?>< div><h4>裁剪之后</h4><img src="test1.png" style="border:1px solid red;"></div>4、PHP为图像添加水印代码如下:<div><h4>没有水印</h4><img src="1.png" style="border:1px solid red;">< /div>< ?phpheader("content-type","text/html;charset=utf-8");/**给背景图片添加水印,背景图片格式png,水印格式gif string $filename 图片的urlstring $water 水印图片*/function watermark($filename,$water){/*获取原图的大小*/list($b_w,$b_h) = getimagesize($filename);/*获取水印图片的大小*/list($w_w,$w_h) = getimagesize($water);/*在背景图片中放水印图片的随机起始位置*/$posX =rand(0,($b_w - $w_w));$posY =rand(0,($b_h - $w_h));/*获取图像资源,需要裁剪的图片*/$back = imagecreatefrompng($filename);$water = imagecreatefromgif($water);/*使用Inagecopy函数复制水印图片到指定位置*/ imagecopy($back, $water, $posX, $posY, 0, 0, $w_w, $w_h); /*保存带水印的图片和命名*/imagepng($back,'test2.png');/*释放资源*/imagedestroy($back);imagedestroy($water);}/*调用函数*/watermark('1.png','test.gif');?>< div><h4>加上水印</h4><img src="test2.png" style="border:1px solid red;"></div>更多信息请查看IT技术专栏。
PHP图像处理

PHP图像处理对于网站建设者来说,图像处理是非常重要的一项工作。
各种活动、广告和产品展示都需要美丽、鲜明的图片来吸引用户访问,并增强用户购物愿望。
而 PHP 就是一种非常适合图像处理的语言。
下面我们一起来详细了解一下 PHP 图像处理的有关内容。
1. PHP 图形库PHP 在图像处理方面的效果非常好,尤其是在绘制、编辑图像方面,PHP 的图形库更是有着不俗的名气。
目前主要的 PHP 图形库有:GD、ImageMagick 和 Ming 三种。
这三种图形库都有各自的优点,这里我主要介绍 GD 和ImageMagick 两个较为常用的库。
2. GD 图形库GD 是一种开源的库,它提供了一系列的函数和类用于创建和操作图像。
GD 库支持 Web 图像格式,可以处理 GIF、JPEG、PNG 等图像,并在合适的情况下自动处理不同格式间的转换。
同时 GD 库还能够处理图像操作,例如裁剪、调整形状、更改颜色等等。
GD 库的使用非常方便,你可以从官网下载最新版本,并且它都已经包含在 PHP 的内核中了,无需额外安装,省去了许多麻烦。
在 PHP 中,我们可以使用 imagecreatefrom**() 系列函数创建指定格式的图像,并通过其他相关函数实现旋转、变形、压缩、水印等相关操作。
3. ImageMagick 图形库GD 虽然使用方便,不过还是有一些缺点,例如对于 PNG 图像的调整,会产生透明度的失真,JPEG 图像的压缩后消除锯齿的效果不是很好等等。
而 ImageMagick 就是一款用于处理、转换、编辑各种图像文件的工具,提供了各种 API,可以在 PHP 中方便地调用。
它支持超过100种图片格式,包括 JPEG、TIFF、PNG、GIF 等等。
使用 ImageMagick 库也是相当简单的,在 PHP 中我们可以通过 new Imagick() 方法实例化一个对象,并通过相关的函数实现图像操作。
例如:裁剪、旋转、缩放、模糊、添加水印、设置边框等等。
php插入和显示数据库中的图片

php插入和显示数据库中的图片(处理二进制数据)插入和显示数据库中的图片(处理二进制数据)数据库应用程序,特别是基于Web的数据库应用程序,常常会涉及到图片信息的存储和显示。
通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,然后在PHP中查询数据库获得文件路径并在HTML 文件中引用。
但是,如果我们想动态的显示图片,上述方法就不能满足需要了。
因此必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。
在实际操作中,可以利用PHP将图片插入到数据库中,在数据库中,图片是以二进制格式存储的。
随后你也可以使用PHP将图片数据读出来并显示在网页上。
使用HTML表单可以将客户端的图片文件作为请求传递给服务端,PHP可以读取请求中的上载文件数据,并将数据保存在数据库中。
1.将图片插入数据库下面我们就来看一个范例,了解怎样使用表单提交图片文件,并保存到数据库中。
这个范例有两个文件组成。
upload.htm这个网页包含一个表单,用于提交图片文件,它的代码如下:代码清单7-6<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>提交表单</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> </head> <body><form action="insertPic.php" method="post" enctype="multipart/form-data" name="mainForm" id="mainForm"><input type="file" name="myFile" /><br /><input type="submit" name="Submit" value="Submit"/></form></body></html> 保存到Web根目录下,在浏览器中请求,可以看到如图7-33所示的效果:图7-33 文件上传表单insertPic.php这个文件用来将提交的文件数据保存到数据库中,代码如下:代码清单7-7<?php//由于上传过来的图片被保存在一个临时文件中,所以//我们仅需要读取该文件就可以获取传过来的图片$fp = fopen($_FILES["myFile"]["tmp_name"],"rb");$buf = addslashes(fread($fp,$_FILES["myFile"]["size"]));//创建一个PDO对象$dbh = new PDO("mysql:host=localhost;port=3306;dbname=myDatabase", "root", "verysecret");//执行插入操作并将结果保存在一个变量中$result = $dbh->query("INSERT INTO employees(firstName,lastName,EmpType,age,picture) VALUES('myFirst','myLast','myEmpType',50,'$buf')");//获取影响的行数if ($result->rowCount() >0) {echo("数据已插入。
php图像处理函数imagecopyresampled用法详解

php图像处理函数imagecopyresampled⽤法详解本⽂实例讲述了php图像处理函数imagecopyresampled⽤法。
分享给⼤家供⼤家参考,具体如下:语法复制代码代码如下:bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )参数dst_image⽬标图象连接资源。
src_image源图象连接资源。
dst_x⽬标 X 坐标点。
dst_y⽬标 Y 坐标点。
src_x源的 X 坐标点。
src_y源的 Y 坐标点。
dst_w⽬标宽度。
dst_h⽬标⾼度。
src_w源图象的宽度。
src_h源图象的⾼度。
成功时返回 TRUE,或者在失败时返回 FALSE。
案例案例(图像裁减):<?php$targ_w = $targ_h = 150; // 设置⽬标宽度与⾼度$jpeg_quality = 90; // 图⽚质量90,满分为100$src = 'demo_files/pool.jpg'; // 被处理的图⽚$img_r = imagecreatefromjpeg($src); // 获取原图$dst_r = ImageCreateTrueColor( $targ_w, $targ_h ); // 获取新图imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],$targ_w,$targ_h,$_POST['w'],$_POST['h']); // ⽬标图源图⽬标X坐标点⽬标Y坐标点源的X坐标点源的Y坐标点⽬标宽度⽬标⾼度源图宽度源图⾼度 header('Content-type: image/jpeg');imagejpeg($dst_r,null,$jpeg_quality); // 输出图象到浏览器或⽂件>案例⼆(重新取样):<?php// 源⽂件$filename = '1.jpg';// 设置最⼤宽⾼$width = 400;$height = 400;// Content typeheader('Content-Type: image/jpeg');// 获取新尺⼨list($width_orig, $height_orig) = getimagesize($filename);$ratio_orig = $width_orig/$height_orig;if ($width/$height > $ratio_orig) {$width = $height*$ratio_orig;} else {$height = $width/$ratio_orig;}// 重新取样$image_p = imagecreatetruecolor($width, $height);$image = imagecreatefromjpeg($filename);imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);// 输出imagejpeg($image_p, null, 100);>附上上传图⽚的三种思路1.选择图⽚,提交表单,服务器统⼀处理上传,保存路径2.选择图⽚,上传,获取路径,提交表单,保存路径3.选择图⽚,上传到服务器,通过某种途径获取到服务器的图⽚,保存到本地更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家PHP程序设计有所帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章 PHP与图像操作PHP不仅可以生成HTML页面,PHP还可以用来创建和操作二进制文件,例如图片。
使用PHP程序动态生成图片可以实现生成缩略图、验证码等多种功能,在实际应用中经常被用到。
在PHP中,通常使用GD库来实现对图像的操作。
本章将介绍如何使用GD库来操作图像文件。
9.1 PHP图像函数库简介在PHP中,使用GD库来对图像进行操作,GD库可以从官方网站/gd/上获得更详细的信息。
GD库是一个开放的动态创建图像的源代码公开的函数库。
GD库使用C语言开发,可以在Perl、PHP等多种程序语言中调用。
目前的GD库支持PNG、JPEG、GIF等多种图像格式。
GD 库通常用于创建图片、文字以及对其他的图片进行处理。
GD库提供了多种图像创建与操作函数,本章将在后面详细介绍。
9.2 GD库的配置GD库在PHP5中是被默认安装的,但是要想激活GD库的使用,必须修改PHP安装路径下的php.ini 文件使其增加GD库的扩展,如下所示。
extension=php_gd2.dll在PHP5中,GD1已经不再受支持,而是使用功能更加强大的GD2。
修改好php.ini文件以后,重新启动Apache服务器后即可使改动生效。
GD库提供了一个函数gd_info来显示GD库的安装信息,其语法格式如下所示。
array gd_info();该函数返回一个包含有完整GD安装信息的数组,具体代码如下所示。
<?phpvar_dump(gd_info());?>运行结果如下所示。
array(12) {["GD Version"]=>string(27) "bundled (2.0.28 compatible)"["FreeType Support"]=>bool(true)["FreeType Linkage"]=>string(13) "with freetype"["T1Lib Support"]=>bool(true)第30章 PHP 与图像操作·467·["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(true) ["JPG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XPM Support"]=> bool(false) ["XBM Support"]=> bool(true)["JIS-mapped Japanese Font Support"]=> bool(false) }从上面的运行结果中可以看到当前GD 库的安装版本信息,以及其所支持的图片、字体格式。
除此之外,使用phpinfo 函数也可以得到当前GD 库的安装信息,代码如下所示。
<?php phpinfo(); ?>运行结果如图9-1所示。
图9-1 GD 库的安装信息可以看到上述的运行结果与使用gd_info 函数所得到的结果相同。
9.3 一个简单图像创建程序本节将从一个简单的图像创建程序开始介绍一些常用的图像输出函数,下一节将用几个较复杂的例PHP 开发大全·468· 子来说明GD 库的强大功能。
在GD 库配置好以后,就可以使用PHP 代码来输出图像了。
以下代码是输出了一个简单的图像,使用GD 库提供的函数输出了一个包含文字“Hello World ”的PNG 图片。
<?phpheader("Content-type: image/png"); //声明图片格式为PNG $image = imagecreatetruecolor(200, 100); //创建一个宽200像素,长100像素的图像 $text_color = imagecolorallocate($image, 255, 255, 255); //设置当前颜色为白色 imagestring($image, 5, 0, 0, "Hello World!", $text_color); //输出Hello World 文字 imagepng($image); //输出图像 imagedestroy($image); //销毁图像对象 ?>代码的运行结果如图9-2所示。
图9-2 简单的图像输出例子代码说明:header("Content-type: image/png")用于声明当前图片的格式。
imagecreatetruecolor 函数用于建立一个真彩色的空白图像,其语法格式如下所示。
imagecreatetruecolor(int x, int y)其中,x 为图片的宽,y 为图片的高,该函数返回一个图像资源。
在前面的例子中,使用了imagecreatetruecolor(200, 100)代码来新建一个宽为200,高为100的图像。
imagecolorallocate 函数用于确定当前的颜色设置,其语法格式如下所示。
imagecolorallocate($image, int red, int green, int blue)其中$image 为前面创建的图像对象,red 、green 和blue 为用于确定三种颜色的值。
确定这三种颜色可以通过Windows 自带的画图板中的颜色设置来获得,如图9-3所示。
图9-3 调色板第30章 PHP 与图像操作·469·从图中可以看到,当前选择的颜色的三个值分别为49、49、172。
因此,如果要设置当前的颜色为这种颜色,应使用以下代码来实现。
<?php$text_color = imagecolorallocate($image, 49, 49, 172); ?>imagestring 函数用于水平输出一行字符串,其语法如下所示。
imagestring($image, int font, int x, int y, string str, int color)其中$image 为前面创建的图像对象,font 是所用的字体,x 和y 是字符串所在图像的坐标,str 是要输出的字符串,color 是前面设置的颜色。
imagedestroy 函数用于销毁前面创建的图像对象。
9.4 GD 库的应用实例本节将要通过几个常用的GD 库应用实例来说明GD 库的常见应用方法。
9.4.1 使用GD 库创建图片缩略图在第6章中介绍过文件上传的方法,本小节将实现这样一个实例。
首先将图片从本地上传到服务器端,上传后生成一个缩略图并显示在页面上。
这个功能在相册程序中非常常用。
上传页面的静态HTML 代码如下所示。
<html> <head><title>文件上传</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head><H1>文件上传</H1><form enctype="multipart/form-data" action="Upload.php" method="post"> <input name="upfile" type="file"><BR> <input type="submit" value="Submit"> </form> <body> </body> </html>相应的PHP 代码如下所示。
<?php$uploadfile = "upfiles/".$_FILES['upfile']['name']; //上传后文件所在的文件名和路径 $smallfile = "upfiles/small_".$_FILES['upfile']['name']; //上传后缩略图文件所在的文件名和路径if($_FILES['upfile']['type'] != "image/pjpeg") {echo "文件类型错误"; //输出错误信息} else {PHP 开发大全·470· move_uploaded_file($_FILES['upfile']['tmp_name'], $uploadfile);//上传文件$dstW =200; //设定缩略图的宽度 $dstH= 200; //设定缩略图的高度$src_image = ImageCreateFromJPEG($uploadfile); //读取JPEG 文件并创建图像对象 $srcW = ImageSX($src_image); //获得图像的宽 $srcH = ImageSY($src_image); //获得图像的高 $dst_image =ImageCreateTrueColor($dstW,$dstH); //创建新的图像对象//将图像重定义大小后写入新的图像对象ImageCopyResized($dst_image,$src_image,0,0,0,0,$dstW,$dstH,$srcW,$srcH); ImageJpeg($dst_image,$smallfile); //创建缩略图文件echo "文件上传完成<BR>"; //输出上传成功的信息 echo "<img src='$smallfile'></img>";//在页面上显示缩略图} ?>在浏览器上运行静态HTML 页面如图9-4所示。