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

PHP中的图像处理函数使用文档

发布时间:2023-06-18 23:33:55

PHP中有许多图像处理函数可以用来处理图像,如GD库和Imagick扩展。通过使用这些函数,开发人员可以在其PHP应用程序中动态创建、编辑和渲染图像。本文将提供有关如何使用PHP中的图像处理函数的详细说明,探讨了常用的图像处理函数和如何使用它们来完成各种操作。

一、GD库函数

1. 创建图像

使用imagecreate()创建一个空图像

语法:resource imagecreate(int width, int height)

参数解释:

width——图像的宽度,单位为像素。

height——图像的高度,单位为像素。

示例代码:

<?php

$img = imagecreate(500, 300); // 创建一个 500x300 的空白画布

?>

使用imagecreatefromjpeg()、imagecreatefrompng()或imagecreatefromgif()函数从现有图像文件创建图像。

语法:

resource imagecreatefromjpeg(string filename)

resource imagecreatefrompng(string filename)

resource imagecreatefromgif(string filename)

参数解释:

filename——图像文件的路径。

示例代码:

<?php

$img_jpg = imagecreatefromjpeg('original.jpg');

$img_png = imagecreatefrompng('original.png');

$img_gif = imagecreatefromgif('original.gif');

?>

2. 处理图像

使用imagecopy()、imagecopymerge()或imagecopyresampled()函数来处理图像,或使用不同的函数合并和复制部分图像。这些函数的功能如下:

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)

imagecopymerge():将一幅图像混合到另一幅图像上,支持半透明操作。

语法:bool imagecopymerge(resource $dst_im, resource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h, int $pct)

imagecopyresampled():将一幅图像粘贴到另一幅图像上,并根据目标图像的尺寸缩放源图像。

语法:bool imagecopyresampled(resource $dst_im, resource $src_im, 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_im——目标图像标识符。

$src_im——源图像标识符。

$dst_x——目标图像中的 X 坐标(以像素为单位)。

$dst_y——目标图像中的 Y 坐标(以像素为单位)。

$src_x——源图像中的 X 坐标(以像素为单位)。

$src_y——源图像中的 Y 坐标(以像素为单位)。

$src_w——从源复制的图像宽度。

$src_h——从源复制的图像高度。

$pct——混合图像的透明度。

$dst_w——目标图像的宽度。

$dst_h——目标图像的高度。

示例代码:

<?php

$img1 = imagecreatefromjpeg('image1.jpg');

$img2 = imagecreatefromjpeg('image2.jpg');

imagecopymerge($img1, $img2, 0, 0, 0, 0, 450, 300, 50); // 将$img2混合到$img1中,透明度为50%

?>

3. 缩放图像

使用imagescale()函数可以从源图像中生成指定大小的缩略图。这个功能非常适合图片库网站和电子商务网站,可以快速的生成缩略图。

语法:resource imagescale(resource $src_img, int $new_width, int $new_height [, int $mode])

参数解释:

$src_img——源图像标识符

$new_width——缩略图的宽度,以像素为单位。

$new_height——缩略图的高度,以像素为单位。

$mode——可选的缩放模式,支持下面的值:

IMG_NEAREST_NEIGHBOUR:最近邻插值算法。

IMG_BILINEAR_FIXED:双线性算法,变换平滑。

IMG_BICUBIC:双三次样条插值算法。

IMG_WEIGHTED4:加权 4x4 算法。

IMG_QUADRATIC:2次内插

示例代码:

<?php

$img = imagecreatefromjpeg('original.jpg');

$resized_img = imagescale($img, 150, 100);

?>

4. 添加水印

如果您想在图像上添加水印,可以使用imagestring()或imagefttext()函数,在原始图像上绘制文本。还可以使用imagecopymerge()函数来将另一张图像添加到源图像上,从而创建一个水印。

语法:

// 在图像上绘制字符串

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

// 在图像上使用 TrueType 字体绘制文本

bool imagefttext(resource $image, float $size, float $angle, int $x, int $y, int $color, string $font_file, string $text [, array $extrainfo])

// 合并另一张图像到源图像

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

参数解释:

$size——使用的字体大小。

$angle——以度为单位的旋转角度。

$x——绘制文本的水平位置。

$y——绘制文本的垂直位置。

$color——文本颜色。

$font_file——TrueType 字体文件的完整路径。

$text——要绘制的文本字符串。

$extrainfo——数组,其中包含一些可选参数,例如字符间距、行距等。

示例代码:

<?php

$img = imagecreatefromjpeg('original.jpg');

// 绘制字符串

imagestring($img, 5, 10, 10, 'Watermark Text', 0xFFFFFFFF);

// 在图像上使用 TrueType 字体绘制文本

$fontfile = 'arial.ttf';

imagettftext($img, 20, 0, 100, 200, 0xFF0000, $fontfile, 'Text in a TrueType font');

// 合并另一张图像到源图像

$img2 = imagecreatefrompng('watermark.png');

imagecopymerge($img, $img2, 0, 0, 0, 0, 50, 50, 50);

?>

二、Imagick扩展

Imagick是PHP中一款非常流行的图像处理扩展,它允许您轻松地进行复杂的图像操作,如调整大小、旋转、裁剪、添加边框、调整颜色和亮度等。

1. 创建图像

使用new Imagick()或Imagick::readImage()函数从现有图像文件创建图像。

语法:

Imagick::__construct([string $filename])

Imagick::readImage(string $filename)

参数解释:

$filename——图像文件的路径。

示例代码:

<?php

$img1 = new Imagick();

$img1->newImage(300, 200, 'white', 'png');

$img2 = new Imagick('original.jpg');

$img3 = new Imagick();

$img3->readImage('original.png');

?>

2. 处理图像

使用Imagick的不同方法处理图像。以下方法用于调整图像的尺寸:

Imagick::scaleImage($columns, $rows);

Imagick::cropThumbnailImage($width, $height);

Imagick::resizeImage($columns, $rows, Imagick::FILTER_LANCZOS, 1);

Imagick::sampleImage($columns, $rows);

以下方法用