亚洲日本中文字幕天天更新,亚洲人成人网站在线观看,亚洲免费人成在线视频观看,亚洲日韩乱码中文无码蜜桃臀,亚洲精品一区二区三区精品

網(wǎng)站建設(shè)資訊

php一張圖片拼接其他圖片和文字的功能介紹

網(wǎng)站建設(shè) 2021-10-30 17:39:32 | 閱讀:1367 | 作者:陳應(yīng)信 | 標(biāo)簽:php    
今天介紹一下php里一個(gè)實(shí)用的功能,就是一張圖片與圖片和文字的拼接,最近一個(gè)做物品鑒定的客戶,要求用戶上傳圖片,然后根據(jù)圖片鑒定物品是正品或是仿冒的,然后返回給用戶一個(gè)鑒定證書,證書的圖片除了用戶上傳的前兩張圖片,姓名,訂單編號(hào),檢測日期外,其他的都信息都是一樣的,如下圖所示:

PHP

由于以上信息是可以通過后臺(tái)的數(shù)據(jù)獲得的,所以客戶要求能自動(dòng)生成證書,這樣能省下不少的時(shí)間。
先講圖片拼接,原理就是讓一張小圖粘貼到大圖里,代碼如下:
function opentow($dst_path,$thumb_src,$thumb_src2,$order_id){
    //$dst_path 原始大圖  $thumb_src要拼接的小圖1,$thumb_src2 是拼接的小圖2,$order_id訂單號(hào),用于生成圖片名稱    
$Absolute_Path=substr($_SERVER['SCRIPT_FILENAME'],0,-10);
        //本地的絕對(duì)路徑
      
        $src_path= $thumb_src; //要合并的圖片1
$src_path2= $thumb_src2; //要合并的圖片2
        $hz = substr(strrchr($dst_path, '.'), 1);
        $path = 'Uploads/baogao/';
        //生成新圖片名
        $image = $path.$order_id.".".$hz;
        //創(chuàng)建圖片的實(shí)例
        $dst = imagecreatefromstring(file_get_contents($dst_path));
        $src = imagecreatefromstring(file_get_contents($src_path));
        //獲取水印圖片的寬高
       // $src_w =120;$src_h=80;
        list($src_w,$src_h) = getimagesize($src_path);
$widthz = 225;//要合并的圖片1在原始圖片的x位置
$heightz = 628;//要合并的圖片1在原始圖片的y位置
        //如果水印圖片本身帶透明色,則使用imagecopy方法
        imagecopy($dst, $src, $widthz,$heightz, 0, 0, $src_w, $src_h);

        $src2 = imagecreatefromstring(file_get_contents($src_path2));

        //獲取水印圖片的寬高
       // $src_w =120;$src_h=80;
        list($src_w2,$src_h2) = getimagesize($src_path2);

$widthz = 568;//要合并的圖片2在原始圖片的x位置
$heightz = 628;//要合并的圖片2在原始圖片的y位置
imagecopy($dst, $src2, $widthz,$heightz, 0, 0, $src_w2, $src_h2);
        //輸出圖片
        list($src_w, $src_h, $dst_type) = getimagesize($dst_path);

list($src_w2, $src_h2, $dst_type) = getimagesize($dst_path);
        switch ($dst_type) {
            case 1://GIF
                imagegif($dst, $image);
                break;
            case 2://JPG
                imagejpeg($dst, $image);
                break;
            case 3://PNG
//              header('Content-Type: image/png');
                imagepng($dst, $image);
                break;
            default:
                break;
        }
        return $image;//返回合并后的圖片的路徑
    }
然后是文字拼接,用上面返回的圖片路徑繼續(xù)操作
$image_url = $this->opentow($bg_src,$thumb_src,$thumb_src2,$order_id);
$img = $image_url;
ini_set("gd.jpeg_ignore_warning", 1);
$size = 20;//字體大小,可調(diào)整大小
$font = "./Uploads/simfang.ttf";//這里加載字體ttf,這里是必須的,否則無法添加文字
$img = imagecreatefromjpeg($img);// 加載已有圖像
$black = imagecolorallocate($img, 0, 0, 0);//設(shè)置顏色為藍(lán)色
imagettftext($img, $size, 0, 360, 880, $black, $font, $brand_name);//根據(jù)坐標(biāo)添加文字,可根據(jù)實(shí)際情況隨時(shí)調(diào)用位置,下面同理
imagettftext($img, $size, 0, 355, 935, $black, $font, $cate_name);//添加品牌類別名稱
imagettftext($img, $size, 0, 750, 935, $black, $font, stringtime($model['create_time'],2));//添加檢測時(shí)間
$realname = $member['nickname']?$member['nickname']:'暫未';
imagettftext($img, $size, 0, 360, 990, $black, $font, $realname);//添加姓名
imagettftext($img, $size, 0, 360, 1045, $black, $font, $model['jian_no']);//添加訂單號(hào)
imagejpeg($img,$image_url);//保存圖片
header("location:".."/".$image_url);//這里是指保存后直接在瀏覽器是顯示這張生成的證書圖片,如下圖所示:

生成的圖片
結(jié)束語:要注意圖片的路徑,用的是相對(duì)路徑,例如圖片在Uploads/moban1.jpg里,則圖片路徑是“./Uploads/moban1.jpg”,也可以用“Uploads/moban1.jpg”,還上面的兩張小圖片保存的路徑是絕對(duì)路徑,是需要處理成相對(duì)路徑,由于用戶上傳的圖片大小是不一樣大小的,所以需要將這兩張圖片生成固定寬度和高度的圖片進(jìn)行保存,然后再使用保存后的圖片,所以每生成一次證書都會(huì)保存兩張小圖片和一張證書圖片,分開放在不同的目錄里。