yii2 gd 添加图片水印
时间: 2024-09-30 12:11:39 浏览: 32
Yii2实现ajax上传图片插件用法
Yii2框架中的GD库可以用来添加图片水印。GD库是一个PHP的图像处理库,功能强大,常用于生成缩略图、添加文本水印等。以下是使用GD库在Yii2中添加图片水印的基本步骤:
1. 引入GD库和Yii的Image辅助类:
```php
use Yii;
use Imagine\ImagineInterface;
use Imagine\Image\Box;
use Imagine\Image\Point;
```
2. 定义一个函数,接收图片路径和水印文字、位置等参数:
```php
public function addWatermark($imagePath, $watermarkText, $position = Point::create(10, 10), $opacity = 50)
{
// 创建Imagine实例
$imagine = Yii::$app->get('imagine');
try {
// 加载原始图片
$image = $imagine->open($imagePath);
// 设置水印文字样式(颜色、字体大小等)
$fontColor = imagecolorallocatealpha($image->getDriver()->getCanvas(), 255, 255, 255, $opacity); // 透明度可根据需要调整
// 使用GD函数添加水印
imagettftext($image->getDriver()->getCanvas(), 24, 0, $position->getX(), $position->getY() + ($image->getHeight() - imagettftext_nb_chars($image->getDriver()->getCanvas(), $fontColor, $watermarkText)), $fontColor, 'path/to/font.ttf', $watermarkText);
// 将结果保存回文件
$resultImagePath = pathinfo($imagePath, PATHINFO_FILENAME) . '_with_watermark.' . pathinfo($imagePath, PATHINFO_EXTENSION);
$image->save($resultImagePath);
return $resultImagePath; // 返回新的带水印图片路径
} catch (\Exception $e) {
// 处理可能出现的异常
echo "Error adding watermark: " . $e->getMessage();
}
}
```
阅读全文