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

PHP图像处理函数:图片缩放、水印添加、格式转换等常用操作

发布时间:2023-06-22 18:29:13

PHP作为一种流行且广泛使用的服务器端编程语言,提供了许多强大的图像处理函数来帮助程序员在网站开发中实现常用的图像操作,如图片缩放、水印添加、格式转换等。本文将介绍PHP中常用的几个图像处理函数,供读者参考和使用。

一、图片缩放函数

在Web开发中,经常需要对图片进行缩放处理来适应不同分辨率的屏幕或实现特定的操作需求。PHP提供的图片缩放函数使这个过程变得非常简单。常用的图片缩放函数有imagecopyresized()和imagecopyresampled()。

1. imagecopyresized()函数

imagecopyresized()函数可按指定的宽度和高度缩放图片,并将结果另存为新文件。函数定义如下:

bool imagecopyresized ( 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:新图像的资源标识符,由imagecreate()、imagecreatetruecolor()等函数创建。

- $src_image:要缩放的图像的资源标识符。

- $dst_x:新图像中目标区域左上角 x 坐标。

- $dst_y:新图像中目标区域左上角 y 坐标。

- $src_x:要缩放的图像中源区域左上角 x 坐标。

- $src_y:要缩放的图像中源区域左上角 y 坐标。

- $dst_w:新图像中目标区域的宽度。

- $dst_h:新图像中目标区域的高度。

- $src_w:要缩放的图像中源区域的宽度。

- $src_h:要缩放的图像中源区域的高度。

以下是一个使用imagecopyresized()函数缩放图片的示例:

$src_image = 'original.jpg';
$dst_image = imagecreatetruecolor(200, 150);
$src_w = imagesx($src_image);
$src_h = imagesy($src_image);
imagecopyresized($dst_image, $src_image, 0, 0, 0, 0, 200, 150, $src_w, $src_h);
imagejpeg($dst_image, 'resized.jpg');

2. imagecopyresampled()函数

imagecopyresampled()函数与imagecopyresized()函数类似,它可以缩放图片并生成新文件,但输出的图像质量更高,因为它使用更复杂的内插法。该函数的定义如下:

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 )

该函数的参数含义与imagecopyresized()函数相同。以下是一个使用imagecopyresampled()函数缩放图片的示例:

$src_image = 'original.jpg';
$dst_image = imagecreatetruecolor(200, 150);
$src_w = imagesx($src_image);
$src_h = imagesy($src_image);
imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, 200, 150, $src_w, $src_h);
imagejpeg($dst_image, 'resampled.jpg');

二、水印添加函数

在图像处理中,通常会在图片上加入一些水印或标记,以保护版权或提供更多信息。PHP提供了一些函数来实现水印添加,其中最常用的函数是imagecopy()和imagestring()。

1. imagecopy()函数

使用imagecopy()函数添加水印时,我们需要先创建两个图像资源,一个是要添加水印的图片,另一个是水印图片。imagecopy()函数将水印图片复制到要添加水印的图片上,最后保存新图像即可。函数定义如下:

bool imagecopy ( resource $dst_im , resource $src_im ,
 int $dst_x , int $dst_y , int $src_x , int $src_y ,
 int $src_w , int $src_h )

该函数的参数含义如下:

- $dst_im:要添加水印的图片资源。

- $src_im:水印图片资源。

- $dst_x:水印放置位置在 $dst_im 图像中的 x 坐标。

- $dst_y:水印放置位置在 $dst_im 图像中的 y 坐标。

- $src_x:水印图片左上角在 $src_im 图像中的 x 坐标。

- $src_y:水印图片左上角在 $src_im 图像中的 y 坐标。

- $src_w:水印图片的宽度。

- $src_h:水印图片的高度。

以下是一个使用imagecopy()函数添加水印的示例:

$src_image = 'original.jpg';
$watermark = 'watermark.png';
$dst_image = imagecreatefromjpeg($src_image);
$watermark_image = imagecreatefrompng($watermark);
$watermark_w = imagesx($watermark_image);
$watermark_h = imagesy($watermark_image);
imagecopy($dst_image, $watermark_image, 0, 0, 0, 0, $watermark_w, $watermark_h);
imagejpeg($dst_image, 'watermarked.jpg');

2. imagestring()函数

使用imagestring()函数添加水印时,我们可以直接在要添加水印的图片上绘制文字,以实现水印效果。函数定义如下:

bool imagestring ( resource $image , int $font , int $x , int $y , 
string $string , int $color )

该函数的参数含义如下:

- $image:要添加水印的图片资源。

- $font:字体类型,使用标准 GD 字体。

- $x:水印放置位置在 $image 图像中的 x 坐标。

- $y:水印放置位置在 $image 图像中的 y 坐标。

- $string:要绘制的文字。

- $color:文字颜色,可以使用imagecolorallocate()函数创建。

以下是一个使用imagestring()函数添加水印的示例:

$src_image = 'original.jpg';
$dst_image = imagecreatefromjpeg($src_image);
$watermark_text = 'watermark';
$color = imagecolorallocate($dst_image, 255, 255, 255);
imagestring($dst_image, 5, 10, 10, $watermark_text, $color);
imagejpeg($dst_image, 'watermarked.jpg');

三、格式转换函数

PHP提供了几个函数来转换图片格式。在Web开发中,这对于处理来自不同来源的图像非常有用,有助于减少计算机资源的消耗,提高性能。常用的格式转换函数有imagecreatefromjpeg()、imagecreatefrompng()和imagecreatefromgif()等。

1. imagecreatefromjpeg()函数

imagecreatefromjpeg()函数将JPEG格式的图像文件转换为GD图像资源,支持的图像类型有.jpg、.jpeg和.jpe。函数定义如下:

resource imagecreatefromjpeg ( string $filename )

该函数只有一个参数$filename,表示要处理的JPEG图像文件名。以下是一个使用imagecreatefromjpeg()函数转换图像格式的示例:

$src_image = 'original.jpg';
$dst_image = imagecreatefromjpeg($src_image);
imagepng($dst_image, 'converted.png');
imagedestroy($dst_image);

2. imagecreatefrompng()函数

imagecreatefrompng()函数将PNG格式的图像文件转换为GD图像资源,支持的图像类型有.png。函数定义如下:

resource imagecreatefrompng ( string $filename )

该函数