laravelGD库图片处理

  • composer下载
composer require intervention/image
  • demo
//以下为生成用户证书举例

use Intervention\Image\Facades\Image;

public function index()
{
	/*如果没有遇到可忽略
		1、生成中出现的问题,“网页出现HTTP ERROR 500” 错误。
		2、原因:图片文件过大内存不足所导致。
		3、解决方法:在代码执行前加上
			可以通过PHP中 ini_set('memory_limit', '300M'); 函数(增加 PHP 内存限制 根据需要设置更高的值)
	*/
	
	//ini_set('memory_limit', '300M');
	
    // 创建一个画布
    $canvas = Image::canvas(2480, 3508); // 宽度 800, 高度 600

    // 加载背景图片
    $background = Image::make('zhyx_cert_background_v2.jpg');
    $canvas->insert($background, 'center');

    // 加载另一个图片并合并到画布上
    $headImage = Image::make('FtZAP0bOLBm5EERYNERd74yh4GH-.jpg')->fit(400, 560); //fit(400,560)图片裁剪
//        $headImage = Image::make('https://qiniu.cn/FjyDcy6tPvXCeaZcChXv6UoOc1Vp')->fit(400, 560);
    $sealImage = Image::make('zhyx_seal.jpg');

    //头像
    $canvas->insert($headImage, 'top-right', 1050, 1070); // 插入位置 (top-right), 偏移量 (10, 10)
    //印章
    $canvas->insert($sealImage, 'top-right', 430, 2450);

    //添加文字到画布

    //姓名
    $name = '张三三';
    $canvas->text($name, 1130, 1740, function($font) {
        $font->file('simkai.ttf'); // 使用自定义字体文件
        $font->size(75); // 字体大小
        $font->color('#0000'); // 字体颜色
        $font->align('center'); // 文字对齐方式
        $font->valign('middle'); // 垂直对齐方式
        $font->angle(0); // 文字角度
    });

    //证书编号
//        $cert_number = 'ZHYX'.date('Y').'0000000001';
    $cert_number = 'ZJWPYX2024050001';
    $canvas->text($cert_number, 731, 2700, function($font) {
        $font->file('simkai.ttf'); // 使用自定义字体文件 simkai.ttf根据自己需求下载
        $font->size(45); // 字体大小
        $font->color('#0000'); // 字体颜色
        $font->align('center'); // 文字对齐方式
        $font->valign('middle'); // 垂直对齐方式
        $font->angle(0); // 文字角度
    });

    //签发单位
    $company = 'xxxxx';
    $canvas->text($company, 1815, 2700, function($font) {
        $font->file('simkai.ttf'); // 使用自定义字体文件
        $font->size(45); // 字体大小
        $font->color('#0000'); // 字体颜色
        $font->align('center'); // 文字对齐方式
        $font->valign('middle'); // 垂直对齐方式
        $font->angle(0); // 文字角度
    });

    //签发日期
    $sign_date = '2024年03月10日';
    $canvas->text($sign_date, 1800, 2890, function($font) {
        $font->file('simkai.ttf'); // 使用自定义字体文件
        $font->size(45); // 字体大小
        $font->color('#0000'); // 字体颜色
        $font->align('center'); // 文字对齐方式
        $font->valign('middle'); // 垂直对齐方式
        $font->angle(0); // 文字角度
    });

    //查询网址
    $query_url = 'http://wwww.baidu.com';
    $canvas->text($query_url, 780, 2890, function($font) {
        $font->file('simkai.ttf'); // 使用自定义字体文件
        $font->size(45); // 字体大小
        $font->color('#0000'); // 字体颜色
        $font->align('center'); // 文字对齐方式
        $font->valign('middle'); // 垂直对齐方式
        $font->angle(0); // 文字角度
    });


    return $canvas->response(); // 输出图片到浏览器

    // 保存图片到服务器或输出到浏览器
//        $imageName = time().'image.png';
//        $canvas->save(public_path().'/temp_cert/'.$imageName,10); // 保存图片到服务器

    //七牛云上传
    $disk = Storage::disk('qiniu');
    $time = 'zhyx'.date('Y/m/d-H:i:s');
    $path = $canvas->encode('png'); //获取画布图片
    $filename = $disk->put($time,$path);//上传
    if(!$filename) {
        return response()->json([
            'code' => 500,
            'msg' => '上传失败',
        ]);
    }
    $img_url = $disk->getDriver()->downloadUrl($time); //获取下载链接
    return response()->json([
        'code' => 200,
        'msg' => 'OK',
        'img_url' => $img_url
    ]);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值