首先引用phpqrcode類庫php
下載phpqrcode類庫函數
下載地址就不提供了,百度一搜一大把;
新建php文件用於建立二維碼url
請注意看(每段中文後面都會有必定的代碼示例) 好比:新建文件 qrcode.php 以後在文件中引入phpqrcode類庫 代碼演示 include('../phpqrcode/phpqrcode.php'); 然後就到了設置二維碼的連接地址了 $url = 'http://www.baidu.com'; 接着設置二維碼的容錯級別,何爲容錯級別?通俗點就是容錯級別百分比越高,就越容易識別,下面是三種容錯級別: L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 按照效果排序依次是 H -> Q -> M -> L 因此,就直接用 H 代碼示例: $errorCorrectionLevel = 'H';//容錯級別 然後繼續設置生成二維碼圖片的大小 $matrixPointSize = 7;//圖片大小慢慢本身調整,只要是int就行 設置生成二維碼的圖片名稱,博主用了5爲隨機數+時間戳生成文件名,爲了防止文件名重複相互覆蓋。。 QR = rand(10000,99999).time().".png"; 最後就到了生成二維碼啦! 直接調用ORcode::png()就行,帶上剛纔設置好的參數。最後的這個參數*2*是表明白邊的寬度。 QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2);
若是你想在二維碼中間放個LOGO那麼你就繼續看!code
首先,引用一張圖片(you company LOGO) $logo = './images/logo.png'; 然後爲了程序的完整性,簡單的判斷一下。也許某些童鞋不要LOGO的,注意看下面的代碼,博主註釋的都比較清楚的。
if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二維碼圖片寬度 $QR_height = imagesy($QR);//二維碼圖片高度 $logo_width = imagesx($logo);//logo圖片寬度 $logo_height = imagesy($logo);//logo圖片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //從新組合圖片並調整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); }
最後直接輸出圖像便可排序
仍是老樣子,咱們給圖片來個名字;此次用6爲隨機數+時間戳 $QRM = rand(100000,999999).time().".png"; imagepng($QR, $QIMG); 然後輸出圖像 echo '<img src="'.$QIMG.'">';
整個帶logo的二維碼生成就完成了。若是還要拼合在其餘圖像上就繼續接着看!(文章結尾有整個項目的代碼,記得點贊!)圖片
imagecopymerge函數制拼合(鑲嵌,合併)圖片 一樣適合水印之類的get
首先仍是設置圖片,底圖和上面的覆蓋圖string
$dst_path = 'a.png';//底圖 $src_path = $QIMG;//覆蓋圖,咱們就繼續用上面的那張圖QIMG
建立圖片的實例it
$dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path));
獲取覆蓋圖片的寬高io
list($src_w, $src_h) = getimagesize($src_path);
將圖片複製到目標圖片(底圖)上,最後個參數是設置透明度(50爲半透明,100爲不透明,本身隨意設置便可),這裏實現不透明效果,兩個20是控制圖片座標位置,本身慢慢調整
imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100);
若是水印圖片自己帶透明色,則使用imagecopy方法
imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);//博主的不是透明的,因此不用這段~用下面的
生成圖片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
然後用switch判斷一下圖片的類型
switch ($dst_type) { case 1://GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://JPG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; }
最後將圖片打印出來
imagedestroy($dst); imagedestroy($src);
整個程序的完整代碼,伸手黨們!記得點贊打賞收藏等等等等!
include('../phpqrcode/phpqrcode.php'); $url = 'http://www.baidu.com'; //二維碼內容 $errorCorrectionLevel = 'H';//容錯級別 $matrixPointSize = 7;//生成圖片大小 //生成二維碼圖片 $QR = rand(10000,99999).time().".png"; QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2); $logo = '../images/logo.png';//準備好的logo圖片 //生成時間戳處理覆蓋圖片防止權限的存在 // $op = time(); // $QR = 'qrcode.png';//已經生成的原始二維碼圖 if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二維碼圖片寬度 $QR_height = imagesy($QR);//二維碼圖片高度 $logo_width = imagesx($logo);//logo圖片寬度 $logo_height = imagesy($logo);//logo圖片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //從新組合圖片並調整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); } //輸出圖片 $QIMG = rand(100000,999999).time().".png"; imagepng($QR, $QIMG); $dst_path = 'a.png';//底圖 $src_path = $QIMG;//覆蓋圖 //建立圖片的實例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //獲取覆蓋圖圖片的寬高 list($src_w, $src_h) = getimagesize($src_path); //將覆蓋圖複製到目標圖片上,最後個參數100是設置透明度(100是不透明),這裏實現不透明效果,兩個20是覆蓋圖座標位置 imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100); //若是覆蓋圖圖片自己帶透明色,則使用imagecopy方法 //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h); //輸出圖片 list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); switch ($dst_type) { case 1://GIF header('Content-Type: image/gif'); imagegif($dst); break; case 2://JPG header('Content-Type: image/jpeg'); imagejpeg($dst); break; case 3://PNG header('Content-Type: image/png'); imagepng($dst); break; default: break; } imagedestroy($dst); imagedestroy($src);
源代碼理解不了的,請看上面的文章,我都寫的比較清楚,代碼裏面也註釋了~遇到問題解決不了請百度,實在不行就留言給博主,博主會第一時間回覆你!
大功告成,博主要看巴薩打拉斯帕爾馬斯了!希望我梅老闆能再繼續進逆天任意球!
okey bye see you!