关于php使用gd库合并图像 图像模糊处理方法

使用GD库 创建透明图像时 多图像合并时 内图边缘模糊解决方案

最近开发了一个项目,功能是图像,文字生成一个简单的logo,比较简单我用的是php的GD库图像处理进行实现的,开发的时候遇到一个问题透明背景时 图像边缘会模糊有一道黑线效果如下图
在这里插入图片描述
代码如下:

    // 创建图像实例
        $filename =  $choose_image['url'];
        $info = getimagesize($filename);
        $width = $info[0];
        $height = $info[1];
        $new_height = (200/$info[0])*$info[1];
        //获取图片的后缀
        $type = image_type_to_extension($info[2], false);
        //拼接图片资源句柄函数
        $func = 'imagecreatefrom'.$type;
        //创建图片资源句柄
        $image = $func($filename);
        $im = imagecreatetruecolor(300, 300);
        imagecopyresampled($im, $image, 50, 0,0,0,200,$new_height,$width,$height);
        $red=imagecolorallocate($im,255,255,255);
        imagefill($im,0,0,$red);
        imagecolortransparent($im,$red);
        //设置文件路径
        $ml = 'uploads/picture'.'/'.date('Ymd', time());//目录名称
        $url =$ml.'/'.time();//存储的路径
        imagepng($im, $url . image_type_to_extension(IMAGETYPE_PNG),9);

解决之后 图像边缘清晰 不会出现模糊情况,方案是在新建一个画布,把logo图像放在新的画布上然后两个对两个画布进行合并imagecopyresampled(),效果如下
在这里插入图片描述
代码如下:

  // 创建图像实例
        $filename =  $choose_image['url'];
        $info = getimagesize($filename);
        $width = $info[0];
        $height = $info[1];
        $info_im = imagecreatetruecolor($width, $height);
        $info_color = imagecolorallocate($info_im, 255, 255, 255);//白色背景
        imagefill($info_im, 0, 0, $info_color);
        $new_height = (200/$info[0])*$info[1];
        //获取图片的后缀
        $type = image_type_to_extension($info[2], false);
        //拼接图片资源句柄函数
        $func = 'imagecreatefrom'.$type;
        //创建图片资源句柄
        $image = $func($filename);
        imagecopyresampled($info_im, $image, 0, 0,0,0,$width,$height,$width,$height);
        $im = imagecreatetruecolor(300, 300);
        imagecopyresampled($im, $info_im, 50, 0,0,0,200,$new_height,$width,$height);
        $red=imagecolorallocate($im,255,255,255);
        imagefill($im,0,0,$red);
        imagecolortransparent($im,$red);

这是我发的第一次发文章 内容也比较基础,但是这个问题应该很少人会碰到比较偏,在这里记录下 希望能帮到别人

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值