Laravel 扩展 Intervention/image 图片处理
有个需求在平台通过上传两张图片 合成一张照片,并在图片下方添加上人员的信息,通过查找,找到 Intervention/image 图片处理这个扩展应用,记录一下。
官方手册
1. 安装
1). 使用 composer 安装:
composer require intervention/image
2). 修改 app/config/app.php
添加 ServiceProvider:
// 将下面代码添加到 providers 数组中
'providers' => [
// ...
Intervention\Image\ImageServiceProvider::class,
// ...
],
// 将下面代码添加到 aliases 数组中
'aliases' => [
// ...
'Image' => Intervention\Image\Facades\Image::class,
// ...
],
上面需求的实例代码
// 创建一张空的画布,像素3628x1757,背景白色
$img = Image::canvas(3628, 1757, '#fff');
// 获取本地图片,可以获取input上传文件
$leftImage = Image::make(base_path().'/public/p.jpg')->resize(2255, 1305);
$rightImage = Image::make(base_path().'/public/f.jpg')->resize(1000, 1000);
// 插入到画布,left-top是距离左侧和顶部,值对应的是后面 100 100 处
$img->insert($leftImage, 'left-top', 100, 100);
$img->insert($rightImage, 'right-top', 100, 250);
// 插入文本,通过回调设置参数,file上传的是字体库,需要自己下载放入
$img->text('王*军 320830**********542', 1757, 1550, function($font) {
$font->file(base_path().'/public/fzjw.ttf');
$font->size(160);
$font->color('#000');
$font->align('center');
$font->valign('top');
$font->angle(0);
});
//可以直接返回图像,也可通过$img->save()进行保存图片
return $img->response('jpg');
遗憾没有找到字体加粗的办法,只好通过找加粗字体库来处理了
学习了
功能太强,把程序员都伺候成傻瓜了。