1. 程式人生 > >PHP 使用GD庫合成二維碼和海報

PHP 使用GD庫合成二維碼和海報

PHP 使用GD庫合成二維碼和海報

在做微信專案開發過程中,經常會遇到圖片合成的問題,比如將使用者的二維碼合成到宣傳海報中,那麼,遇到這種情況,利用PHP的GD庫也是很容易實現的,實現步驟如下

1、首先是將二維碼縮小為300*300,因為使用微信公眾號介面獲取的二維碼尺寸為430*430,圖片有點大,所以要縮小成300*300的(此處單位都是px,下面預設也是px)

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

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

 1  //2、將縮小的二維碼合成到海報中
 2  $imgs = imagecreatefromjpeg(getcwd().$img);
 3  imagecopy($imgs, $thumb, 200, 400, 0, 0, 300, 300);//核心函式:複製圖片資源到另一圖片資源中
 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圖片是否符合要求

 

最後需要注意的是:

1、圖片型別要和GD庫的imagecreatefrom函式對應,比如圖片是png格式,那麼使用imagecreatefrompng(),如果是jpg格式,則使用imagecreatefromjpeg(),切不要以為圖片是以.png結尾的就一定是png格式的

2、可以使用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 }

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