PHP 如何使用PHP添加水印到图片中
在本文中,我们将介绍如何使用PHP在图片上添加水印。添加水印是在图片上叠加文字或图像,用于保护版权或为图片增添标识。PHP提供了简单且高效的方法来实现这个功能。
阅读更多:PHP 教程
使用GD库添加文字水印
GD库是一个广泛用于图像处理的PHP扩展库,它提供了用于创建、操作和输出图像的函数。下面是使用GD库添加文字水印的示例代码:
// 原始图片路径
sourceImagePath = 'path/to/source/image.jpg';
// 创建一个和原始图片一样大小的画布sourceImage = imagecreatefromjpeg(sourceImagePath);
// 设置水印文字的样式textColor = imagecolorallocate(sourceImage, 255, 255, 255); // 设置文字颜色为白色font = 'path/to/font.ttf'; // 设置字体文件路径
fontSize = 24; // 设置字体大小
// 添加水印文字text = 'Watermark'; // 设置水印文字内容
textBox = imagettfbbox(fontSize, 0, font,text); // 获取水印文字的边界框
textWidth =textBox[4] - textBox[0]; // 获取水印文字的宽度textHeight = textBox[1] -textBox[7]; // 获取水印文字的高度
textX = (imagesx(sourceImage) - textWidth) / 2; // 计算水印文字的左上角x坐标textY = (imagesy(sourceImage) -textHeight) / 2; // 计算水印文字的左上角y坐标
imagettftext(sourceImage,fontSize, 0, textX,textY, textColor,font, text);
// 输出带有水印的图片
header('Content-type: image/jpeg');
imagejpeg(sourceImage);
imagedestroy($sourceImage);
上述代码中,我们首先指定了原始图片的路径。然后,使用imagecreatefromjpeg
函数创建一个和原始图片一样大小的画布。接着,我们设置水印文字的样式,包括文字颜色、字体文件路径和字体大小。在添加水印文字之前,我们使用imagettfbbox
函数获取水印文字的边界框,并根据边界框计算出水印文字的位置。最后,使用imagettftext
函数将水印文字添加到画布上。最后,使用imagejpeg
函数将带有水印的图片输出到浏览器,并销毁画布对象。
使用GD库添加图片水印
除了文字水印,我们还可以使用GD库添加图片水印。以下是使用GD库添加图片水印的示例代码:
// 原始图片路径
sourceImagePath = 'path/to/source/image.jpg';
// 水印图片路径watermarkImagePath = 'path/to/watermark.png';
// 创建一个和原始图片一样大小的画布
sourceImage = imagecreatefromjpeg(sourceImagePath);
// 创建水印图片
watermarkImage = imagecreatefrompng(watermarkImagePath);
watermarkWidth = imagesx(watermarkImage); // 获取水印图片宽度
watermarkHeight = imagesy(watermarkImage); // 获取水印图片高度
// 计算水印图片位置
imageWidth = imagesx(sourceImage);
imageHeight = imagesy(sourceImage);
offsetX = (imageWidth - watermarkWidth) / 2; // 水印图片在原图的x坐标offsetY = (imageHeight -watermarkHeight) / 2; // 水印图片在原图的y坐标
// 合并原图和水印图片
imagecopy(sourceImage,watermarkImage, offsetX,offsetY, 0, 0, watermarkWidth,watermarkHeight);
// 输出带有水印的图片
header('Content-type: image/jpeg');
imagejpeg(sourceImage);
imagedestroy(sourceImage);
在上述代码中,我们首先指定了原始图片和水印图片的路径。然后,使用imagecreatefromjpeg
和imagecreatefrompng
函数分别创建与原始图片和水印图片一样大小的画布。接下来,计算水印图片在原图上的位置,并使用imagecopy
函数将水印图片合并到原图上。最后,使用imagejpeg
函数将带有水印的图片输出到浏览器,并销毁画布对象。
总结
通过使用PHP的GD库,我们可以很方便地在图片上添加水印。无论是文字水印还是图片水印,都可以根据需求使用相应的函数来实现。在实际应用中,我们可以通过调整水印的位置、大小、透明度等参数,来获得不同样式的水印效果。希望本文能帮助读者理解如何使用PHP添加水印到图片中,并在实际开发中得到应用。