php画图

作者: 猪猪静的爸爸 | 来源:发表于2019-02-18 19:03 被阅读0次

//清除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);

相关文章

  • php画图

    //清除php缓冲区内的内容,并且关闭输出缓冲区ob_end_clean();header("Content-ty...

  • 1、php引用变量

    1、PHP引用变量: 引用: Zval: 引用:recommend 画图分析法 关于引用的unset: 结果还是1...

  • 2018-05-19

    画图,画图,画图!我画完了哦[偷笑]

  • 13.1.2 使用GD库画图

    13.1.2 使用GD库画图 GD库图像绘制的步骤 在PHP中创建一个图像应该完成如下所示的4个步骤:1.创建一个...

  • 微信小程序Canvas

    新版 画图片 旧版 画图

  • 唯美漫画图片分享图包下载

    唯美漫画图片 唯美漫画图片 唯美漫画图片 唯美漫画图片 唯美漫画图片 唯美漫画图片 更多唯美漫画图片请关注微信公众...

  • 画图狗的独白

    我是一条资深画图狗…… 毫不夸张的说,到了画图周忙的昏天黑地,吃饭喝水睡觉都会忘记……只有画图画图画图,模型模型模...

  • 画图

    周五早会技术员通知,下周一每人交岗位练兵记录本。 从五月初就下发通知,每人每周练兵五道题并画一张岗位工艺流程图。但...

  • 画图

    图片是照着网上临摹的,先起个草稿。 这个我选择从腿开始网上处理。 鼠标不好控制,杂线很多,就跟裁衣服似的,最后再清...

  • 画图

网友评论

      本文标题:php画图

      本文链接:https://www.haomeiwen.com/subject/ksezeqtx.html