海报生成,画布与底图合并

海报生成,画布与底图合并

问题:订单信息过多,在海报上出现文字溢出(文字显示不全)情况
解决:创建一个画布(按照订单信息的多少设置可变的高度),然后与海报合并,最后加入二维码与文字水印

不创建画布:

public function watermark(){
    header('content-type: image/png');
    //订单信息
    $elements   = [['k'=>'姓名','v'=>'张三'],['k'=>'手机号码','v'=>'18900000000']];
    $count      = count($elements);
    //底图
    $basemap    = "https://s1.ax1x.com/2020/07/30/auWo8A.png";
    $dst_im     = imagecreatefrompng($basemap);
    //图片水印 - 二维码
    $qrcode     = "https://s1.ax1x.com/2020/07/30/au4C7T.png";
    $src_im = imagecreatefrompng($qrcode);
    imagecopyresampled($dst_im, $src_im, 290, 300, 0, 0, 620, 620, imagesx($src_im), imagesy($src_im));
    //文字水印
    $black = imagecolorallocate($dst_im, 0, 0, 0);
    imagettftext($dst_im, 34, 0, 160, 1300, $black, public_path('static/ttf/apple.ttf'), '企业名称');
    imagettftext($dst_im, 34, 0, 380, 1300, $black, public_path('static/ttf/apple.ttf'), '北京每天开心有限公司');
    imagettftext($dst_im, 34, 0, 160, 1380, $black, public_path('static/ttf/apple.ttf'), '订单编号');
    imagettftext($dst_im, 34, 0, 380, 1380, $black, public_path('static/ttf/apple.ttf'), '202010011598346274532');
    imagettftext($dst_im, 34, 0, 160, 1460, $black, public_path('static/ttf/apple.ttf'), '订单价格');
    imagettftext($dst_im, 34, 0, 380, 1460, $black, public_path('static/ttf/apple.ttf'), '¥1000.00');
    imagettftext($dst_im, 34, 0, 160, 1540, $black, public_path('static/ttf/apple.ttf'), '优惠金额');
    imagettftext($dst_im, 34, 0, 380, 1540, $black, public_path('static/ttf/apple.ttf'), '¥10.00');
    if($elements) {
        $y = 1620;
        foreach ($elements as $item) {
            imagettftext($dst_im, 34, 0, 160, $y, $black, public_path('static/ttf/apple.ttf'), $item['k']);
            imagettftext($dst_im, 34, 0, 380, $y, $black, public_path('static/ttf/apple.ttf'), $item['v']);
            $y = $y+80;
        }
    }
    imagepng($dst_im);
    imagedestroy($dst_im);
}

创建画布后:

public function watermark(){
    header('content-type: image/png');
    //订单信息
    //$elements   = [['k'=>'姓名','v'=>'张三'],['k'=>'手机号码','v'=>'18900000000']];
    $elements   = [['k'=>'姓名','v'=>'张三'],['k'=>'手机号码','v'=>'18900000000'],['k'=>'邮箱','v'=>'18900000000@qq.com'],['k'=>'微信','v'=>'zhangsan007']];
    $count      = count($elements);
    //底图
    $basemap    = "https://s1.ax1x.com/2020/07/30/auWo8A.png";
    $basemap_im = imagecreatefrompng($basemap);
    //新建画布
    $width      = imagesx($basemap_im);
    $height     = $count>2 ? imagesy($basemap_im)+($count-2)*80 : imagesy($basemap_im);
    $dst_im     = imagecreatetruecolor($width, $height);
    //给画布分配颜色
    $white      = imagecolorallocate($dst_im, 255, 255, 255);
    //给画布填充颜色
    imagefill($dst_im, 0, 0, $white);
    //*********重点:将画布与底图合并为一张图************
    imagecopymerge($dst_im, $basemap_im, 0, 0, 0, 0, imagesx($basemap_im), imagesy($basemap_im), 100);
    //图片水印 - 二维码
    $qrcode     = "https://s1.ax1x.com/2020/07/30/au4C7T.png";
    $src_im = imagecreatefrompng($qrcode);
    imagecopyresampled($dst_im, $src_im, 290, 300, 0, 0, 620, 620, imagesx($src_im), imagesy($src_im));
    //文字水印
    $black = imagecolorallocate($dst_im, 0, 0, 0);
    imagettftext($dst_im, 34, 0, 160, 1300, $black, public_path('static/ttf/apple.ttf'), '企业名称');
    imagettftext($dst_im, 34, 0, 380, 1300, $black, public_path('static/ttf/apple.ttf'), '北京每天开心有限公司');
    imagettftext($dst_im, 34, 0, 160, 1380, $black, public_path('static/ttf/apple.ttf'), '订单编号');
    imagettftext($dst_im, 34, 0, 380, 1380, $black, public_path('static/ttf/apple.ttf'), '202010011598346274532');
    imagettftext($dst_im, 34, 0, 160, 1460, $black, public_path('static/ttf/apple.ttf'), '订单价格');
    imagettftext($dst_im, 34, 0, 380, 1460, $black, public_path('static/ttf/apple.ttf'), '¥1000.00');
    imagettftext($dst_im, 34, 0, 160, 1540, $black, public_path('static/ttf/apple.ttf'), '优惠金额');
    imagettftext($dst_im, 34, 0, 380, 1540, $black, public_path('static/ttf/apple.ttf'), '¥10.00');
    if($elements) {
        $y = 1620;
        foreach ($elements as $item) {
            imagettftext($dst_im, 34, 0, 160, $y, $black, public_path('static/ttf/apple.ttf'), $item['k']);
            imagettftext($dst_im, 34, 0, 380, $y, $black, public_path('static/ttf/apple.ttf'), $item['v']);
            $y = $y+80;
        }
    }
    imagepng($dst_im);
    imagedestroy($dst_im);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值