使用 [intervention/image] 包进行开发
安装composer require intervention/image
创建画布
# $width 画布高度
# $height 画布宽度
# $color 16进制颜色 如:#FFFFFF
$image = Image::canvas($width,$height,$color);
插入图片
# insert(resource,position,x,y) 在画布指定位置插入图片
# resource 图片资源|图片路径
# 以什么为原点 top-left:以左上角 bottom-left:已左下角 top-right:以右上角 bottom-right:以右下角
# x x轴距原点位置
# y y轴距原点位置
$image = Image::canvas($width,$height,$color);
$image->insert(public_path('image/avatar.png'), 'top-left', 200, 300);
更改图片大小
# 1.通过make($resource) 创建image实例
# $resource 图片路径 string|图片资源bytes
# 2.通过resize($width,$height) 重新设置图片的宽度,高度
# $width 宽度 int
# $height 高度 int
$image = Image::make(file_get_contents(public_path('image/fabric.png')));
$image->resize(200,200);
获取图片bytes
# encode($format,$quality)->getEncoded() 获取图片的bytes结果
# $format 图片格式:png|jpg ......
# $quality 图片质量 int
$image = $image = Image::make(file_get_contents(public_path('image/fabric.png')));
$image->encode()->getEncoded();
输出图片
# response($format,$quality) 输出图片
# $format 图片格式:png|jpg ......
# $quality 图片质量 int
$image = $image = Image::make(file_get_contents(public_path('image/fabric.png')));
return $image->response('png',90);
设置字体,大小,颜色
# size($size) 设置字体大小
# $size int
# 如果不设置字体,字体大小不生效
# file($file) 设置字体文件
# $file位置
# color($color) 设置字体颜色
# $color 支持16进制颜色|rgb颜色
$image = Image::canvas(500, 500);
$image->text("给我点个赞,\n可以不可以。", 100, 200, function ($font) {
/** @var \Intervention\Image\Gd\Font $font */
$font->size(25)
->file(public_path('font/华文行楷.ttf'))
// ->color('EBC825');
->color([235,200,37]);
});
return $image->response();
实例
namespace App\Http\Controllers\Test;
use App\Http\Controllers\Core\CoreController;
use Intervention\Image\Facades\Image;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
/**
* Class IndexController
* @package App\Http\Controllers\Test
*/
class IndexController extends CoreController
{
public function index()
{
$canvas = Image::canvas(500, 600);
$head = Image::make(public_path('image/fabric.png'))
->resize(400, 300);
$text = <<<EOF
君不见黄河之水天上来
奔流到海不复回
君不见高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
EOF;
$canvas->insert($head, 'top-left', 50, 50)
->insert($this->createQrCode(), 'top-left', 50, 400)
->text($text, 220, 415, function ($font) {
/** @var \Intervention\Image\Gd\Font $font */
$font->size(22)
->file(public_path('font/华文行楷.ttf'))
->color('#C867E1');
});
return $canvas->response('png', 90);
}
public function createQrCode()
{
return QrCode::format('png')->size(150)->generate('https://github.com');
}
}
注:
遇到Internal GD font () not available. Use only 1-5.错误
解决方法:
1.把字体文件,放在public文件夹下的fonts文件夹
2.在服务器的话,使用绝对路径也可以,不过在本地调试的话不能使用绝对路径,要用相对地址
网友评论