php画图

//清除php缓冲区内的内容,并且关闭输出缓冲区
ob_end_clean();
header("Content-type: image/png");
//logo
path_1 = "img/icon_logo.png"; //背景图片path_2 = "img/icon_beijing.png";
//二维码
path_3 = "img/code.png"; //de logopath_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);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、介绍 (1)缓存介绍 1)浏览器缓存: 是保存在浏览器端的缓存,这个缓存我们没有办法控制。在360等卫士的清理...
    宠辱不惊丶岁月静好阅读 3,382评论 0 1
  • PHP的输出缓冲区 什么是缓冲区?简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至...
    桖辶殇阅读 6,096评论 3 12
  • 一、php过滤器 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。测试、验证和过滤用户输入或自定...
    空谷悠阅读 3,064评论 0 5
  • 有人称赞他是韵人、贤人、真义士、医国手,有人则骂他性龌龊、善逢迎、斥他为名教罪人;有人说他是龟公,是下流的猥琐男,...
    西吴大叔阅读 5,036评论 0 1
  • 今天学习了客诉,派单,要资源 首先我觉得客诉我们要正确的对待,这个也是客户对我们信任的一个方式,这个客户她愿意跟你...
    车公庙梦梦阅读 1,211评论 0 0

友情链接更多精彩内容