PHP 文字与图片合成,与logo图片(png)合成

(BB:啰嗦,GG:遇到的BUG,MM:显示代码)
BB:     因需要要合成一个图片 认证书,所以需要此项功能(代码总是再最下面)

GG1:    遇到合成图片不支持显示中文,使用的是 imagefttext()函数。
            J1:   使用过 iconv("gb2312","utf-8",$str) 但是遇到 
                    iconv(): Detected an illegal character in input string 报错信息
                    原因是: iconv不支持 gb2312. 改成GBK就可以了。(可能只是php7iconv不支持gb2321)

                    结果:使用iconv 中文还是显示不正常

            J2:   使用mb_convert_encoding($str,"utf-8","gb2312")
                    结果:中文显示还是显示不正常
            

            J3:最后更换字体使用 simsun.ttc
                    结果:中文显示正常 (不需要使用iconv与mb_convert_encoding())

GG2:    PNG透明图片合成的时候使用 imagecopymerge() 函数 合成的图片会乱了。
            J1:    把imagecopymerge() 合成方式 改成使用  imagecopyresampled()的合成方式

 

MM:

$origion_image_path = $this->orig_image_path;                                  //主图url 

$seal_image_path = $this->seal_image_path;                                      //印章图(水印/logo) url//获取原图

$img = imagecreatefromstring(file_get_contents($origion_image_path));   //处理印章

$seal_image = imagecreatefrompng($seal_image_path);

imagesavealpha($seal_image, true);                                                    //设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息。

$des_seal_width = imagesx($seal_image);

$des_seal_height = imagesy($seal_image);                                        //印章合拼图片

imagecopyresampled($img,$seal_image,950-63,1150-63,0,0,$des_seal_width,$des_seal_height,$des_seal_width,$des_seal_height);  

//字体文件

$font = $this->font;

//字体颜色(RGB)

$black = imagecolorallocate($img, 0, 0, 0);

//字体大小

$fontSize = 20;

imagefttext($img, $fontSize, 0, 287, 492, $black, $font, $brand); //品牌 340

$conclusions_length = mb_strlen($conclusions);

list($bgWidth, $bgHight, $bgType) = getimagesize($origion_image_path);

switch ($bgType) {

        case 1://gif

            header('Content-Type:image/gif');

            imagegif($img,$this->image_save_path.$this->image_save_name.$this->image_save_format);

            break;

        case 2://jpg

            header('Content-Type:image/jpg');

            imagejpeg($img,$this->image_save_path.$this->image_save_name.$this->image_save_format);

            break;

        case 3://png

            header('Content-Type:image/png');

            imagepng($img,$this->image_save_path.$this->image_save_name.$this->image_save_format);

            break;

        default:

            break;

    }

    imagedestroy($seal_image);

    //销毁照片

    imagedestroy($img);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值