图片处理:PHPGD库函数使用指南
PHPGD库是PHP提供的一组图形处理扩展函数,可以进行各种图形的创建、编辑和输出,包括图片格式的转换、颜色处理、字体处理、旋转缩放等。在web应用程序中,图形处理是一个非常重要的功能,有了PHPGD库就可以更加轻松地实现图形处理功能。
本文将介绍PHPGD库函数的使用方法,包括图片的加载、裁剪、缩放、文字输出、图形输出等基本操作。
一、PHPGD库环境配置
在使用PHPGD库之前,需要确保PHP已经开启了GD库扩展。打开php.ini配置文件搜索gd,可以看到:
extension=php_gd2.dll
如果没有则需要将该行去掉注释符号并重启Apache服务器使配置生效。
二、PHPGD库基本操作
1、创建画布
创建画布使用imagecreatetruecolor函数,语法如下:
resource imagecreatetruecolor ( int $width , int $height )
其中,width和height为需要创建的画布的宽度和高度,返回画布的资源对象。
2、导入图片
导入图片使用imagecreatefromxxx函数,xxx为图片的类型,支持的图片类型有:gif,jpeg,png。例如导入png格式的图片:
resource imagecreatefrompng ( string $filename )
其中,filename表示要导入的图片文件路径,返回一个源图像的资源对象。
3、裁剪图片
裁剪图片使用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和dst_y表示目标图像的坐标,src_x和src_y表示源图像的坐标,dst_w和dst_h表示需要裁剪的宽度和高度,src_w和src_h表示源图像的宽度和高度。返回是否裁剪成功。
4、缩放图片
缩放图片使用imagecopyresampled函数,同上,只需要修改参数即可实现缩放操作。裁剪和缩放的本质是一样的,只是需要传入不同的参数。
5、绘制文字
绘制文字使用imagestring函数,语法如下:
bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )
其中,image为要绘制文字的画布,font为字体大小,x和y为要输出文字的坐标,string为要绘制的文字,color为颜色。注意:默认字体只能显示英文,如果需要输入中文需要添加字体文件。
6、输出图片
输出图片使用imagejpeg、imagepng、imagegif等函数,语法如下:
bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
其中,image为要输出的图片,filename为输出的文件名,quality为输出品质(0-100)。如果不指定filename则图片将以流的形式输出到浏览器。
三、PHPGD库实例
下面我们来实现一个简单的图片上传和裁剪功能。实现思路如下:
1、上传原始图片
2、裁剪并缩放图片
3、绘制文字
4、输出图片
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
if(move_uploaded_file($_FILES['file']['tmp_name'],'./'.$_FILES['file']['name'])){
$src=imagecreatefromjpeg('./'.$_FILES['file']['name']);
$dst=imagecreatetruecolor(200,200);
imagecopyresampled($dst,$src,0,0,(int)$_POST['x'],(int)$_POST['y'],200,200,(int)$_POST['w'],(int)$_POST['h']);
imagestring($dst,5,100,100,'Hello World',imagecolorallocate($dst,255,255,255));
header('Content-type:image/jpeg');
imagejpeg($dst);
imagedestroy($src);
imagedestroy($dst);
exit;
}
}
?>
除了裁剪缩放图片之外,我们还添加了输出文字的功能,用于在图片上显示一句话。实际上,PHPGD库的功能远不止于此,还可以添加水印、生成验证码、绘制图形等等。可以根据具体需要随时使用。
