PHP 使用GD庫合成二維碼和海報
阿新 • • 發佈:2018-11-15
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、獲取圖片資源的時候,要通過絕對路徑獲取,相對路徑是獲取不到的