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

PHP函数应用:图片处理和水印添加

发布时间:2023-06-09 03:54:04

随着互联网的不断发展,图片成为一个重要的媒介,它已经成为各种网站和应用程序的必要组件。对于大多数人来说,图像处理最经常使用的是编辑、调整颜色、裁剪等操作。然而,还有更多更有用的处理方法可以帮助提高图片的质量和用户体验,其中最常见的就是添加水印,即在图片上添加一个文字或标识性的图标,以表明拥有者的身份或版权信息等。在本文中,我们将介绍如何使用PHP函数处理图片并添加水印。

PHP图像处理库

PHP 有一些内置的图像处理函数,例如 imagecreate()、imagecreatetruecolor()、imagecopy() 等,但这些函数仅提供最基本的图像处理功能。对于更高级或特定的图像处理需求,PHP 提供了 GD 图像处理库,这是一个功能强大的库,它提供了一套完整的函数,可以用于操作和处理各种类型的图像文件。GD 库需要手动启用,在 Ubuntu 环境下可以使用以下命令启用:

sudo apt-get install php7.2-gd

GD 库包含各种函数,用于创建、修改、缩放、旋转和水印等图像操作。例如,为了创建一个 200 x 200 像素的红色图片,可以使用以下代码:

$im = imagecreatetruecolor(200, 200);

$red = imagecolorallocate($im, 255, 0, 0);

imagefill($im, 0, 0, $red);

header('Content-Type: image/png');

imagepng($im);

imagedestroy($im);

在这个例子中,我们使用 imagecreatetruecolor() 函数创建了一个200 x 200 像素的空白图片,然后使用 imagecolorallocate() 函数为图片分配颜色。接着,我们使用 imagefill() 函数将图像的左上角填充为红色。最后,我们设置 Content-Type 标头,告诉浏览器我们要输出的是一个 PNG 格式的图像,然后使用 imagepng() 函数将图像输出。

添加水印

添加水印是在图片上添加一些额外的数据,如文字或图形,用于确认图像的来源,防止图片被恶意使用或盗用。以下是如何使用 GD 库和 PHP 代码给图片添加水印:

1.创建图片的资源

要向图片中添加水印,首先需要准备好图片的资源。在使用相应的图像函数之前,必须调用相应的函数打开图片,以使得可以对图片进行处理。可以按照以下代码来打开一张图片:

$img = imagecreatefromjpeg("photo.jpg");

其中,imagecreatefromjpeg() 函数用于从一个 JPEG 文件中创建一个新的图像资源。

2.添加水印文字

要添加一个水印文字,需要使用 PHP 中的 imagettftext() 函数。imagettftext() 函数通常用于将文本添加到图像中。使用该函数需要确定以下几个参数:

- Image: 用于添加文本的图片资源

- Size: 字体大小

- Angle: 文本倾斜角

- X: 文本的 X 轴位置

- Y: 文本的 Y 轴位置

- Color: 文本颜色

- Font: 字体类型

- Text: 添加的文本

以下是一个添加文本水印的例子:

$img = imagecreatefromjpeg("photo.jpg");

$text = "watermark";

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

$font = realpath('/usr/share/fonts/truetype/ubuntu/Ubuntu-B.ttf');

imagettftext($img, 20, 0, 10, 30, $color, $font, $text);

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

imagejpeg($img);

imagedestroy($img);

在这个例子中,我们使用 imagettftext() 函数来将 "watermark" 添加到图片的左上角。实际上,与 imagestring() 类似,该函数还支持添加不同字体大小和颜色的文本。$font 参数决定了使用的字体。在此例中,使用 realpath() 函数获取与脚本文件中的 Ubantu-Bold.ttf 字体相关联的绝对路径。

3.添加图片水印

要是使用图片做水印,需要使用 imagecreatefrompng() 函数将水印图像处理成资源,并使用 imagecopy() 函数将它叠加到源图像上。以下是添加图像水印的例子:

$photo = "photo.jpg";

$watermark = "watermark.png";

$quality = 100;

$margin_right = 10;

$margin_bottom = 10;

$img = imagecreatefromjpeg($photo);

$logo = imagecreatefrompng($watermark);

$logo_size_w = imagesx($logo);

$logo_size_h = imagesy($logo);

$dest_x = imagesx($img) - $logo_size_w - $margin_right;

$dest_y = imagesy($img) - $logo_size_h - $margin_bottom;

imagecopy($img, $logo, $dest_x, $dest_y, 0, 0, $logo_size_w, $logo_size_h);

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

imagejpeg($img, null, $quality);

imagedestroy($img);

imagedestroy($logo);

在这个例子中,我们从 JPEG 文件 photo.jpg 中创建了图片资源 $img 和 PNG 文件 watermark.png 中创建了图像资源 $logo。接着,我们调用了 imagesx() 和 imagesy() 函数,计算水印图像在源图像中的大小。之后,我们使用 imagecopy() 函数将叠加到原始图像上的水印图像粘贴到最终的图像中。

总结

以上是在 PHP 中处理图片并添加水印的一些例子。GD 库提供了各种函数和选项,可以用于处理和操纵图像。此外,还有其他流行的库,如 ImageMagick 和 GraphicsMagick,它们提供了更多的图像处理选项和功能。在网站或应用程序中使用图像时,能够用这些工具来为自己的网站和应用程序添加视觉效果和更好的用户体验。