yiisoft/yii2-imagine 详细使用案例
时间: 2024-09-29 12:15:22 浏览: 73
`yiisoft/yii2-imagine` 是一个用于处理图像操作的组件,它在Yii框架2.x版本中非常有用,可以方便地创建缩略图、裁剪图片、添加水印等。以下是使用这个组件的一个详细示例:
```php
// 引入依赖并初始化组件
use Imagine\Image\Box;
use Imagine\Image\Point;
use Imagine\Image\Font;
use Imagine\Image\Color;
use Imagine\Image\Draw;
use Imagine\Gd\Imagine;
use Imagine\Image as ImageHelper;
use Yii\imagine\Image;
// 假设你已经在配置文件里注册了组件
// 在控制器或者服务类中获取Imagine实例
$imageImagine = Yii::$app->imagine;
// 读取原始图片
$sourceImagePath = '@frontend/web/images/original.jpg';
$image = $imageImagine->open($sourceImagePath);
// 创建一个矩形区域(这里我们创建一个固定大小的水印)
$watermarkSize = new Box(100, 50); // 宽度100px,高度50px
$watermarkPosition = Point::bottomRightOf($image->getSize()); // 右下角
// 加载水印图片,比如从资源目录加载
$watermarkImagePath = '@frontend/web/images/watermark.png';
$watermark = $imageImagine->open($watermarkImagePath);
// 添加水印
$resultImage = $image->copy()->paste($watermark, $watermarkPosition, $watermarkSize);
// 对结果进行一些额外的操作,如添加文字水印
$fontPath = '@vendor/bower/font-awesome/fonts/fontawesome-webfont.ttf'; // 字体路径
$font = new Font($fontPath);
$color = new Color(255, 255, 255); // 白色
$text = "Yii2 Watermark";
$textOptions = ['size' => 12, 'font' => $font];
$watermarkText = $draw->text(Point::center($watermarkSize), $text, $color, $textOptions);
// 将文字水印贴到水印图片上
$watermarkWithText = $watermark->copy()->paste($watermarkText, Point::center($watermarkSize));
// 最终保存处理后的图片
$newImagePath = '@frontend/web/images/watermarked.jpg';
$resultImage->save($newImagePath);
阅读全文