Laravel图片合成

前言

常用于生成活动分享图
开发框架Laravel8.x
使用 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');
    }
}

示例成果

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值