PHP 使用GD庫合成帶二維碼的海報步驟以及源碼實現

PHP 使用GD庫合成帶二維碼的海報步驟以及源碼實現

在作微信項目開發過程當中,常常會遇到圖片合成的問題,好比將用戶的二維碼合成到宣傳海報中,那麼,遇到這種狀況,利用PHP的GD庫也是很容易實現的,實現步驟以下php

準備好素材:服務器

 

    一、二維碼原圖qrcode.png  尺寸430*430:微信

    二、海報原圖test.png  尺寸680*1074:函數

 

步驟以及源碼:spa

  1、首先是將二維碼縮小爲206*206,由於使用微信公衆號接口獲取的二維碼尺寸爲430*430,圖片有點大,因此要縮小成206*206的(此處單位都是px,下面默認也是px)code

 1  //已生成二維碼路徑
 2  $avatarUrl = '\qrcode.png';  3  //海報路徑
 4  $img = '\test.jpg';  5  //一、將微信二維碼縮小至206*206,默認是430
 6  $thumb = imagecreatetruecolor(206,206);     //建立一個新的畫布(縮放後的),從左上角開始填充透明背景
 7  $img_content = imagecreatefromjpeg(getcwd().$avatarUrl);//獲取圖片資源  8  //dump($img_content);
 9  imagecopyresampled($thumb, $img_content, 0, 0, 0, 0, 206, 206, 430, 430);//核心函數,改變圖片大小 10  $file_name = "\qrcode_1.png"; 11  imagepng($thumb,getcwd().$file_name);//將圖片資源保存到qrcode_1.png中

  2、此時在當前目錄就會生成一個206*206的以qrcode_1.png命名的圖片:而後將縮小的二維碼圖片合成到海報中blog

 1  //二、將縮小的二維碼合成到海報中
 2  $imgs = imagecreatefromjpeg(getcwd().$img);  3  imagecopy($imgs, $thumb, 237, 589, 0, 0, 206, 206);//核心函數:複製圖片資源到另外一圖片資源中  4  //imagecopy($imgd,$imgw,$x,$y,0,0, $wwidth,$wheight);  5  //$save="image".$dtype;  6  //保存到服務器
 7  $f_file_name = "\last.png";  8  imagepng($imgs,getcwd().$f_file_name); //保存
 9  imagedestroy($imgs); 10  imagedestroy($thumb);//銷燬圖片資源

此時,最終的合成已經完成,能夠查看last.png圖片是否符合要求:(其實,細看仍是沒有徹底對好,這就是尺寸計算有問題,稍微修正一下就好)接口

 

最後須要注意的是:圖片

一、GD庫的imagecreatefrom函數要和圖片真實格式對應,好比圖片是png格式,則使用imagecreatefrompng(),若是是jpg格式,則使用imagecreatefromjpeg(),切不要覺得圖片是以.png結尾就必定是png格式的資源

二、能夠使用php自帶的getimagesize()函數來獲取圖片的真正格式

1 //獲取圖片大小及類型
2 $arr = getimagesize(getcwd().$avatarUrl); 3 dump($arr);die;

執行結果爲:

1 array(7) { 2   [0] => int(430) //圖片寬度像素值 3   [1] => int(430) //圖片高度像素值 4   [2] => int(2) //圖片的類型,返回數字,其中1爲gif,2爲jpg,3爲png,等等 5   [3] => string(24) "width="430" height="430""
6   ["bits"] => int(8) 7   ["channels"] => int(1) 8   ["mime"] => string(10) "image/jpeg" //圖片的mime信息
9 }

三、獲取圖片資源的時候,要經過絕對路徑獲取,相對路徑是獲取不到的

相關文章
相關標籤/搜索