PHP-GD 合并图像

/**
     * GD 合并图像
     * @param string $background_img 背景图
     * @param string $code_img  二维码
     * @param string $file_name 合并图路径
     */
    public function create_code($background_img,$code_img,$file_name){
        $background_img = $background_img ? $background_img : 'img/share/default_bg.jpg';

        //获取背景图像资源 $background_img_source
        $background_img_info = getimagesize($background_img);
        $background_img_type = $background_img_info[2];//1 = GIF,2 = JPG,3 = PNG ...
        if($background_img_type == 3){
            $background_img_source = imagecreatefrompng($background_img);
        }elseif ($background_img_type == 2){
            $background_img_source = imagecreatefromjpeg($background_img);
        }elseif ($background_img_type == 1){
            $background_img_source = imagecreatefromgif($background_img);
        }else{
            $background_img_source = imagecreatefromstring(file_get_contents($background_img));
        }

        //获取二维码图像资源 $code_img_source
        $code_img_info = getimagesize($code_img);
        $code_img_type = $code_img_info[2];
        if($code_img_type == 3){
            $code_img_source = imagecreatefrompng($code_img);
        }elseif ($code_img_type == 2){
            $code_img_source = imagecreatefromjpeg($code_img);
        }elseif ($code_img_type == 1){
            $code_img_source = imagecreatefromgif($code_img);
        }else{
            $code_img_source = imagecreatefromstring(file_get_contents($code_img));
        }

        // 创建真彩画布
        $merge_img = imageCreatetruecolor(imagesx($background_img_source),imagesy($background_img_source));

        // 为真彩画布创建白色背景
        $color = imagecolorallocate($merge_img, 255, 255, 255);
        imagefill($merge_img, 0, 0, $color);

        /**
         * 复制背景图到真彩画布中(重新取样-获取透明图片)
         * @dst_image 目标图像
         * @src_image 被拷贝的源图像
         * @dst_x    目标图像开始 x 坐标
         * @dst_y    目标图像开始 y 坐标,x,y同为 0 则从左上角开始
         * @src_x    拷贝图像开始 x 坐标
         * @src_y    拷贝图像开始 y 坐标,x,y同为 0 则从左上角开始拷贝
         * @dst_w    设定载入的原图的宽度(在此设置缩放)
         * @dst_h    设定载入的原图的高度(在此设置缩放)
         * @src_w    (从 src_x 开始)拷贝的宽度
         * @src_h    (从 src_y 开始)拷贝的高度
         */
        imagecopyresampled($merge_img, $background_img_source, 0, 0, 0, 0, imagesx($background_img_source), imagesy($background_img_source), imagesx($background_img_source), imagesy($background_img_source));


        /**
         * 合并图像
         * @dst_image 目标图像
         * @src_image 被拷贝的源图像
         * @dst_x    目标图像开始 x 坐标
         * @dst_y    目标图像开始 y 坐标,x,y同为 0 则从左上角开始
         * @src_x    拷贝图像开始 x 坐标
         * @src_y    拷贝图像开始 y 坐标,x,y同为 0 则从左上角开始拷贝
         * @dst_w    设定载入的原图的宽度(在此设置缩放)
         * @dst_h    设定载入的原图的高度(在此设置缩放)
         * @src_w    (从 src_x 开始)拷贝的宽度
         * @src_h    (从 src_y 开始)拷贝的高度
         * @pct       图像合并程度,取值 0-100 ,当 pct=0 时,实际上什么也没做,反之完全合并
         */
        $dst_x = imagesx($merge_img) - imagesx($code_img_source) - 40;
        $dst_y = imagesy($merge_img) - imagesy($code_img_source) - 40;
        imagecopymerge($merge_img, $code_img_source, $dst_x, $dst_y, 0, 0, imagesx($code_img_source), imagesy($code_img_source), 100);

        // 保存合成图片
        imagepng($merge_img,$file_name);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨四点的_LA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值