php怎么在图片上加水印
时间 : 2023-03-26 18:16:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
在PHP中,实现图片加水印非常简单。下面是一个基本的示例代码,演示如何在一张图片上加一张水印图片:
```php
// 打开原始图片
$src = imagecreatefromjpeg('original.jpg');
// 打开水印图片
$watermark = imagecreatefrompng('watermark.png');
// 读取图片宽高
$srcWidth = imagesx($src);
$srcHeight = imagesy($src);
$watermarkWidth = imagesx($watermark);
$watermarkHeight = imagesy($watermark);
// 按照原始图片大小,创建一个新的画布
$output = imagecreatetruecolor($srcWidth, $srcHeight);
// 将原始图片绘制到新画布
imagecopy($output, $src, 0, 0, 0, 0, $srcWidth, $srcHeight);
// 将水印图片绘制到新画布上,并设置透明度
imagecopymerge($output, $watermark, 0, 0, 0, 0, $watermarkWidth, $watermarkHeight, 50);
// 输出新画布,即添加水印后的图片
header('Content-Type: image/jpeg');
imagejpeg($output, null, 90);
//释放内存
imagedestroy($src);
imagedestroy($watermark);
imagedestroy($output);
上述代码共包括以下几个步骤:
1. 使用`imagecreatefromjpeg`函数打开原始图片,使用`imagecreatefrompng`函数打开水印图片;
2. 使用`imagesx`和`imagesy`函数获取原始图片和水印图片的宽高;
3. 使用`imagecreatetruecolor`函数创建新的画布,并按照原始图片大小设置宽高;
4. 使用`imagecopy`函数将原始图片绘制到新画布;
5. 使用`imagecopymerge`函数将水印图片绘制到新画布上,并设置透明度;
6. 使用`imagejpeg`函数输出新画布,即添加水印后的图片;
7. 使用`imagedestroy`函数释放内存资源。
需要注意的是,上述代码中的`imagecopymerge`函数还有一个可选参数,代表着水印的透明度。此处设置为50,可根据需要进行修改。
除此之外,还可以通过`imagecopyresampled`函数对水印图片进行缩放操作,以适应不同尺寸的原始图片。例如:
```php
// 计算水印图片的缩放比例
$scale = min($srcWidth/$watermarkWidth, $srcHeight/$watermarkHeight);
// 计算水印图片的宽高,同时保持宽高比例不变
$watermarkWidth = $scale*$watermarkWidth;
$watermarkHeight = $scale*$watermarkHeight;
// 创建缩放后的水印图片
$watermark_resized = imagecreatetruecolor($watermarkWidth, $watermarkHeight);
imagecopyresampled($watermark_resized, $watermark, 0, 0, 0, 0, $watermarkWidth, $watermarkHeight, imagesx($watermark), imagesy($watermark));
// 将缩放后的水印图片绘制到新画布上
imagecopymerge($output, $watermark_resized, 0, 0, 0, 0, $watermarkWidth, $watermarkHeight, 50);
// 释放缩放后的水印图片内存
imagedestroy($watermark_resized);
此处的缩放比例根据原始图片的宽高和水印图片的宽高进行计算。然后,使用`imagecreatetruecolor`函数创建一个新的画布,并按照计算后的水印图片宽高设置。接着,使用`imagecopyresampled`函数对原水印图片进行缩放操作,并将缩放后的水印图片绘制到新画布上。最后,使用`imagedestroy`函数释放缩放后的水印图片内存。
总结而言,PHP实现图片加水印,需要了解PHP GD库相关的函数。同时,还需注意到图片大小,以及对水印图片进行缩放等操作,以保证生成的水印图片效果更佳。
在PHP中,可以使用GD库来实现在图片上加水印。
GD库是一个开源的绘图库,可以用来创建和操作图像。在PHP中,GD库已经成为标准的库之一,需要启用GD扩展才能使用。
下面是一个简单的例子,用GD库在图片上添加水印:
```php
// 加载原图
$source_image = imagecreatefromjpeg('path/to/source/image.jpg');
// 创建水印
$watermark = imagecreatefrompng('path/to/watermark.png');
// 获取原图和水印的宽高
$source_width = imagesx($source_image);
$source_height = imagesy($source_image);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
// 计算水印的位置
$x = $source_width - $watermark_width - 10; // 10是间距,可以根据需要调整
$y = $source_height - $watermark_height - 10;
// 将水印复制到原图上
imagecopy($source_image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height);
// 保存图片
imagejpeg($source_image, 'path/to/new/image.jpg', 100);
上面的代码中,首先使用`imagecreatefromjpeg()`函数加载原图和水印,然后使用`imagesx()`和`imagesy()`函数获取它们的宽高。接着,计算水印应该放在的位置,这里是将水印放在原图的右下角,离边框有10px的间距。最后使用`imagecopy()`函数将水印复制到原图上,并使用`imagejpeg()`函数保存新的图片。
需要注意的是,上面的代码中使用了JPEG格式的图片作为原图和PNG格式的图片作为水印,如果你的图片格式不同,需要使用相应的函数来加载。同样,保存新图片时,也需要使用正确的函数来保存,比如`imagepng()`、`imagegif()`等。
上一篇
php怎么在云虚拟主机
下一篇
怎么打印报名表php格式
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章