(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);