//清除php缓冲区内的内容,并且关闭输出缓冲区
ob_end_clean();
header("Content-type: image/png");
//logo
path_2 = "img/icon_beijing.png";
//二维码
path_4 = "img/de.png";
//合并图片路径
$filename = 'img/zhengshu.png';
//将人物和装备图片分别取到两个画布中
$image_1 = imagecreatefrompng($path_1);
$image_2 = imagecreatefrompng($path_2);
$image_co = imagecreatefrompng($path_3);
$image_de = imagecreatefrompng($path_4);
//创建一个和人物图片一样大小的真彩色画布(ps:只有这样才能保证后面copy装备图片的时候不会失真)
$image_3 = imageCreatetruecolor(imagesx($image_2),imagesy($image_2));
//$image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
//为真彩色画布创建白色背景,再设置为透明
$color = imagecolorallocate($image_3, 255, 255, 255);
imagefill($image_3, 0, 0, $color);
//首先将logo画布采样copy到真彩色画布中,不会失真
imagecopyresampled($image_3,$image_1,320,100,0,0,imagesx($image_1),imagesy($image_1),imagesx($image_1),imagesy($image_1));
//再将背景图片copy到已经具有人物图像的真彩色画布中,同样也不会失真
imagecopymerge($image_3,$image_2, 0,0,0,0,imagesx($image_2),imagesy($image_2), 500);//700
//二维码
imagecopyresampled($image_3,$image_co,70,1100,0,0,imagesx($image_co),imagesy($image_co),imagesx($image_co),imagesy($image_co));
//de logo
imagecopyresampled($image_3,$image_de,530,1100,0,0,imagesx($image_de),imagesy($image_de),imagesx($image_de),imagesy($image_de));
//字体颜色
$col = imagecolorallocatealpha($image_3,0,0,0,0);
$fontcol = imagecolorallocate($image_3,101,101,101);
//线条颜色
$lineclo = imagecolorallocate($image_3, 210, 227, 224);// 210, 227, 224
//作品数据
$cars=array("五口之家","室内设计/住宅空间","个人","张烨","330123*******4567","2018-07-23 16:55:18");
// $cars=array('五口之家","室内设计/住宅空间','个人','张烨','330123*******4567','2018-07-23 16:55:18');
//字体路径
$font_path = public_path('font').'/PINGFANG BOLD.TTF';
$fonts = public_path('font').'/PINGFANG MEDIUM.TTF';
//将合并的图片保存到指定的png文件
imagepng($image_3,$filename);
//哈希值
$file=file_get_contents($filename);
$ad = md5($file);
//居中
//获取图像尺寸
list($img_width, $img_height) = getimagesize($filename);
$text = mb_convert_encoding('设计版权电子数据存证证书','utf-8');
// find font-size for $txt_width = 80% of $img_width...
$font_size = 1;
$txt_max_width = intval(0.59 * $img_width);
do {
$font_size++;
$p = imagettfbbox($font_size,0,$font_path,$text);
$txt_width=$p[2]-$p[0];
// $txt_height=$p[1]-$p[7]; // just in case you need it
} while ($txt_width <= $txt_max_width);
// now center text...
$y = $img_height * 0.22 ;// baseline of text at 90% of $img_height
$x = ($img_width - $txt_width) / 2;
//换行
// 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
function autowrap($fontsize, $angle, $fontface, $string, $width) {
// 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
$content = "";
// 将字符串拆分成一个个单字 保存到数组 letter 中
for ($i=0;$i<mb_strlen($string);$i++) {
$letter[] = mb_substr($string, $i, 1);
}
foreach ($letter as $l) {
$teststr = $content." ".$l;
$testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr);
// 判断拼接后的字符串是否超过预设的宽度
if (($testbox[2] > $width) && ($content !== "")) {
$content .= "\n";
}
$content .= $l;
}
return $content;
}
$text1 = autowrap(19, 0, $fonts, $ad, 280); // 自动换行处理
////添加水印文字
////30 是字体大小
////215横坐标
////875 980 是纵坐标
imagettftext($image_3,$font_size,0,$x, $y,$col,$font_path,$text);
imagettftext($image_3,17,0,145,350,$col,$fonts,mb_convert_encoding('证书编号:A1B2C3D4E5F6G7H8I9J0K1L2','utf-8'));
//imagettftext($image_3,$font_size1,0,$x1, $y1,$col,$font_path1,$text1);
imagettftext($image_3,19,0,69,465,$col,$fonts,mb_convert_encoding('作品名称','utf-8'));
imagettftext($image_3,19,0,245,465,$fontcol,$fonts,$cars[0]);
imagettftext($image_3,19,0,69,522,$col,$fonts,mb_convert_encoding('作品类别','utf-8'));
imagettftext($image_3,19,0,245,522,$fontcol,$fonts,$cars[1]);
imagettftext($image_3,19,0,69,579,$col,$fonts,mb_convert_encoding('作品归属','utf-8'));
imagettftext($image_3,19,0,245,579,$fontcol,$fonts,$cars[2]);
imagettftext($image_3,19,0,69,636,$col,$fonts,mb_convert_encoding('申请主体','utf-8'));
imagettftext($image_3,19,0,245,636,$fontcol,$fonts,$cars[3]);
imagettftext($image_3,19,0,69,693,$col,$fonts,mb_convert_encoding('证件号码','utf-8'));
imagettftext($image_3,19,0,245,693,$fontcol,$fonts,$cars[4]);
imagettftext($image_3,19,0,69,750,$col,$fonts,mb_convert_encoding('确权存证时间','utf-8'));
imagettftext($image_3,19,0,245,750,$fontcol,$fonts,$cars[5]);
imagettftext($image_3,19,0,69,817,$col,$fonts,mb_convert_encoding('文件哈希值','utf-8'));
imagettftext($image_3,19,0,245,817,$fontcol,$fonts, $text1);
imagettftext($image_3,19,0,69,910,$col,$fonts,mb_convert_encoding('证书说明:','utf-8'));
imagettftext($image_3,15,0,69,940,$col,$fonts,mb_convert_encoding('1.本证书数据保全采用中国国家科学院授权中心标准时间进行保全。','utf-8'));
imagettftext($image_3,15,0,69,970,$col,$fonts,mb_convert_encoding('2.本次存证证书通过De+自由技术上传IPFS区块链,不可篡改。','utf-8'));
imagettftext($image_3,15,0,69,1000,$col,$fonts,mb_convert_encoding('3.迪家版权代理(深圳)有限公司已经对本次保全进行电子签章。','utf-8'));
imagettftext($image_3,15,0,69,1030,$col,$fonts,mb_convert_encoding('4.存证人可在IPFS区块链上查询此次存证结果。','utf-8'));
//线条
imageline($image_3, 28, 30, 28, 1301, $lineclo);//左线条
imageline($image_3, 723, 30, 723, 1301, $lineclo);//右线条
imageline($image_3, 28, 30, 723, 30, $lineclo);//上线条
imageline($image_3, 28, 1301, 723, 1301, $lineclo);//下线条
//将合并的图片保存到指定的png文件
imagepng($image_3,$filename);
//发送图像到浏览器
imagepng($image_3);
//清除内存
imagedestroy($image_3);
网友评论