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

PHP图像处理函数:实现图片裁剪、水印等特效

发布时间:2023-06-07 09:40:13

在Web开发中,图像处理是一个非常常见的需求。常见的图像处理包括图像缩放、裁剪、旋转、加水印等等。如果使用PHP开发Web应用,可以借助PHP的图像处理函数来实现这些特效。

PHP提供了很多图像处理函数,例如:imagecreatefromjpeg、imagecreatefrompng、imagecreatefromgif等等。下面,我们将介绍一些常用的图像处理函数,包括图片裁剪、水印等特效的实现方法。

1、图片裁剪

裁剪可以将一张图片中的一部分截取出来,并生成一张新的图片。PHP提供了imagecopyresampled函数来实现图片的裁剪和缩放。这个函数可以将原图片的一部分复制到另一张图像上,并缩放到指定尺寸。

    // 源图像

    $src = imagecreatefromjpeg('source.jpg');

    // 目标图像尺寸

    $width = 200; // 宽度

    $height = 200; // 高度

    // 裁剪起点坐标

    $x = 50;

    $y = 50;

    // 创建空白图片

    $dst = imagecreatetruecolor($width, $height);

    // 执行裁剪

    imagecopyresampled($dst, $src, 0, 0, $x, $y, $width, $height, $width, $height);

    // 输出图像

    header('Content-type: image/jpeg');

    imagejpeg($dst);

    // 销毁图像资源

    imagedestroy($src);

    imagedestroy($dst);

上面的代码中,我们使用imagecreatefromjpeg函数读取源图像并创建一个真彩色图像资源。然后,定义新图像的尺寸以及裁剪起点坐标。接着,使用imagecreatetruecolor函数创建空白图像,使用imagecopyresampled函数将原图像的一部分复制到新图像上,并进行缩放。最后,使用imagejpeg函数将新图像输出到浏览器,并销毁图像资源。

2、图片水印

水印是一种常见的图像处理特效,可以将一张图片或文字添加到另一张图片上,并且不会影响原图像。PHP提供了imagecopymerge函数和imagestring函数来实现图片水印。

    // 源图像

    $src = imagecreatefromjpeg('source.jpg');

    // 水印图像

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

    // 水印尺寸

    $wWidth = imagesx($watermark); // 宽度

    $wHeight = imagesy($watermark); // 高度

    // 计算水印位置

    $x = 50; // 水印左上角横坐标

    $y = 50; // 水印左上角纵坐标

    // 在源图像上添加水印

    imagecopymerge($src, $watermark, $x, $y, 0, 0, $wWidth, $wHeight, 50);

    // 输出图像

    header('Content-type: image/jpeg');

    imagejpeg($src);

    // 销毁图像资源

    imagedestroy($src);

    imagedestroy($watermark);

上面的代码中,我们使用imagecreatefromjpeg函数读取源图像和水印图像,并计算水印位置。接着,使用imagecopymerge函数将水印添加到源图像上,并指定水印的透明度为50。最后,使用imagejpeg函数将新的图像输出到浏览器,并销毁图像资源。

除了图片水印,我们还可以使用imagestring函数添加文字水印。这个函数可以将文字添加到图像上,并支持设置字体、大小、颜色等参数。例如:

    // 源图像

    $src = imagecreatefromjpeg('source.jpg');

    // 添加文字水印

    $color = imagecolorallocate($src, 255, 255, 255);

    $font = 'font.ttf'; // 字体文件

    $size = 30; // 字号

    $text = 'www.example.com'; // 文字内容

    $angle = 0; // 文字旋转角度

    $x = 50; // 左上角横坐标

    $y = 50; // 左上角纵坐标

    imagettftext($src, $size, $angle, $x, $y, $color, $font, $text);

    // 输出图像

    header('Content-type: image/jpeg');

    imagejpeg($src);

    // 销毁图像资源

    imagedestroy($src);

上面的代码中,我们使用imagecreatefromjpeg函数读取源图像,并使用imagettftext函数添加文字水印。这个函数可以将文字添加到图像上,并支持设置字体、大小、颜色等参数。最后,使用imagejpeg函数将新的图像输出到浏览器,并销毁图像资源。

3、图片缩放/旋转

除了图片裁剪和水印,PHP还提供了其他的图像处理函数,可以实现图片缩放、旋转等特效。

图片缩放可以使用imagecopyresampled函数实现,与裁剪类似。例如:

    // 源图像

    $src = imagecreatefromjpeg('source.jpg');

    // 目标图像尺寸

    $width = 200; // 宽度

    $height = 200; // 高度

    // 创建空白图片

    $dst = imagecreatetruecolor($width, $height);

    // 执行缩放

    imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, imagesx($src), imagesy($src));

    // 输出图像

    header('Content-type: image/jpeg');

    imagejpeg($dst);

    // 销毁图像资源

    imagedestroy($src);

    imagedestroy($dst);

上面的代码中,我们使用imagecopyresampled函数将原图像缩放到指定尺寸,并生成一张新的图像。

图片旋转可以使用imagerotate函数实现。这个函数可以将图像按指定角度旋转,并生成一张新的图像。例如:

    // 源图像

    $src = imagecreatefromjpeg('source.jpg');

    // 旋转角度

    $angle = 45;

    // 背景颜色

    $color = imagecolorallocate($src, 255, 255, 255);

    // 执行旋转

    $dst = imagerotate($src, $angle, $color);

    // 输出图像

    header('Content-type: image/jpeg');

    imagejpeg($dst);

    // 销毁图像资源

    imagedestroy($src);

    imagedestroy($dst);

上面的代码中,我们使用imagerotate函数将原图像旋转45度,并生成一张新的图像。

总结

PHP提供了很多图像处理函数,可以帮助我们实现各种图像处理特效,包括图片裁剪、水印、缩放、旋转等等。这些函数使用起来比较简单,只需要了解它们的参数和用法,即可快速实现各种特效。