欢迎访问宙启技术站
智能推送

图片处理:PHPGD库函数使用指南

发布时间:2023-06-16 07:20:57

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库的功能远不止于此,还可以添加水印、生成验证码、绘制图形等等。可以根据具体需要随时使用。