laravel扩展Images生成海报

6 篇文章 0 订阅

laravel框架生成海报,包括头像二维码实现过程,再次记录一下

第一步安装

composer require intervention/image

第二步,在config/app.php 在 providers 添加

Intervention\Image\ImageServiceProvider::class,

在 aliases 中添加

'Image' => Intervention\Image\Facades\Image::class,

第三步,在控制器中引入

use Image;

第四步就是使用啦

  //签到海报生成
   public function SignPoster(Request $request)
    { 
        //海报路径
        $poster_url ='xxx.com/upload/images/haibao.png';
        //海报为底图
        $img = Image::make($poster_url); 
		//微信头像路径
		$avatar_img = 'xxx.com/upload/images/touxiang.png';
		//获取微信圆形头像
        $touxiang = $this->test($avatar_img);
        //拼接头像地址
       $head_img = env("APP_URL").'/'.$touxiang;
       //第一个参数头像地址,第二个参数头像显示位置 后两个参数为头像坐标
       $img->insert($head_img, 'bottom-left', 35, 30);
		//二维码地址
		$code_img ='xxx.com/upload/images/code.png';
        $img->insert($code_img , 'bottom-right', 35, 30);
       
		//微信昵称
        $img->text('昵称', 180, 940, function ($font) {
            $font->file(base_path() . '/public/2.ttf');
            $font->size(30);
        });
		//图片地址
        $time = time();
        $img_src = './uploads/share/' . $time. '.jpg';
     	//生成
        $img->save($img_src);
      
        return $this->ret_json(20000, '海报信息', ['img_src' => env('APP_URL') . $img_src]);
    }
    //微信头像变圆方法
    public  function test($url,$path='upload/images/'){  
       
        $w = 132;  $h=132; // original size  微信默认头像大小 高132,宽132
        $original_path= $url;  
        $dest_path = $path.uniqid().'.png'; 
          //没有就创建目录
            if(!file_exists($path))
            {  
                mkdir($path,0777,true);
            }
        $src = imagecreatefromstring(file_get_contents($original_path));  
        $newpic = imagecreatetruecolor($w,$h);  
        imagealphablending($newpic,false);  
        $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 127);  
        $r=$w/2;  
        for($x=0;$x<$w;$x++)  
            for($y=0;$y<$h;$y++){  
                $c = imagecolorat($src,$x,$y);  
                $_x = $x - $w/2;  
                $_y = $y - $h/2;  
                if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){  
                    imagesetpixel($newpic,$x,$y,$c);  
                }else{  
                    imagesetpixel($newpic,$x,$y,$transparent);  
                }  
            }  
        imagesavealpha($newpic, true);  
        imagepng($newpic, $dest_path);  
        imagedestroy($newpic);  
        imagedestroy($src);  
        return $dest_path;  
    }  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在PHP生成海报,你可以使用GD库来处理图像。首先,你需要创建一个画布,然后将背景图和二维码图像添加到画布上。接下来,你可以根据需要对图像进行缩放和调整大小。最后,你可以将生成海报保存为图像文件或直接输出到浏览器。 下面是一个示例代码,演示了如何生成带有背景图和二维码的海报: ```php // 创建画布 $canvasWidth = 500; $canvasHeight = 700; $canvas = imagecreatetruecolor($canvasWidth, $canvasHeight); // 添加背景图 $backgroundImage = imagecreatefromjpeg('bg/bg1.jpg'); imagecopyresampled($canvas, $backgroundImage, 0, 0, 0, 0, $canvasWidth, $canvasHeight, imagesx($backgroundImage), imagesy($backgroundImage)); // 添加二维码图像 $qrcodeImage = imagecreatefrompng('qrcode/qrcode.png'); $qrcodeWidth = 178; $qrcodeHeight = 178; $qrcodeX = 116; $qrcodeY = 306; imagecopyresampled($canvas, $qrcodeImage, $qrcodeX, $qrcodeY, 0, 0, $qrcodeWidth, $qrcodeHeight, imagesx($qrcodeImage), imagesy($qrcodeImage)); // 输出海报 header('Content-Type: image/jpeg'); imagejpeg($canvas, null, 100); // 保存海报为图像文件 $filename = 'poster.jpg'; imagejpeg($canvas, $filename, 100); // 销毁画布和图像资源 imagedestroy($canvas); imagedestroy($backgroundImage); imagedestroy($qrcodeImage); ``` 请注意,上述代码中的路径和参数可能需要根据你的实际情况进行调整。此外,你还可以根据需要对图像进行进一步的处理和调整,例如缩放、裁剪等操作。 #### 引用[.reference_title] - *1* [php生成海报](https://blog.csdn.net/Jifei5201314/article/details/122896661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [PHP生成海报/PHP合并图片/PHP图片处理](https://blog.csdn.net/coolpan123/article/details/82221559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值