予備的
- 導入phpqrcodeライブラリ(ダウンロード:https://download.csdn.net/download/weixin_37557729/11891240 ;サポートカラー2次元コードのダウンロード:https://download.csdn.net/download/weixin_37557729/11891244)
- PHPのGD拡張ライブラリオープンサポート
図1に示すように、二次元コード生成phpqrcodeを使用:
原理分析:
ダウンロードクラスファイルは、多くのファイルやデモ・プログラムが含まれている圧縮されたパッケージで、我々は唯一の内部phpqrcode.php必要
このファイルには、二次元コードを生成することができ、そしてそれは我々が内部で使用する必要がある複数のファイルのコレクションクラス、あるQRコードクラスのPNG()メソッド:
// QRコードポスター、ウェブサイトの画像とテスト生成 パブリック 関数ce_haibao_qrcode(){ $ codeurl = "https://www.baidu.com" ; ベンダー( 'PHPQRcode.classのphpqrcodeの#' ); $ logoQR =「HTTP: //thirdwx.qlogo.cn/mmopen/vi_32/icaYhiapVcmsyGnHouHeSvYiaz8yxtvfBicgx5x8joGh4uNiaibp8skQf8Uv4CNtibsJDndbOQwI9LSvDQP6slFQaLy4g/132 " ; $レベル = 3 ; $サイズ = 6。; $ errorCorrectionLevelは = INTVAL($レベル); // フォールトトレランスレベル の$ matrixPointSize = INTVAL($サイズ)/ /生成画像サイズ の$ DIRPATHは = '/アップロード/ QRコード/' DATE( 'の-D Ymの') '/' ;. // 二次元コード・パス保存 $ dirPath_Bを = '/アップロード/ QRコード/' DATE(「のYmの-d /「 ')。'; // 2次元コードパスを保存する のIF(!file_exists($のDIRPATH ){) MKDIR($のDIRPATH、0777 ); } $のtmpname = 時間() "PNG。";。// 保存で、サーバー名の2次元コード $ qrcodeName = $ DIRPATH。$ tmpname。// 2次元コードパスは、サーバー上に保存されて $ qrcodeName_B = $ dirPath_B。$ Tmpname ; // 2次元コードパスは、サーバー上に保存されて //生成した二次元コードの画像 $オブジェクト = 新しい新\ QRコード(); $オブジェクト - > PNG($のcodeurl、$ qrcodeName、$ errorCorrectionLevel、$ matrixPointSize、2 ); // $ QR =($ qrcodeName)をimagecreatefrompng; $ QR = $ qrcodeName ; $ QRlogoPath。= './Uploads/qrcode/qrlogo/' DATE( '-DのYmの') '/' ; $ QRlogoPath_B = ' /アップロード/ QRコード/ qrlogo /」DATE(乃至Ymの-D ') '/'' ; もし(!file_exists($ QRlogoPath )){ ます。mkdir($ QRlogoPath、0777 ); } $ QRコード = 時間。( ')。PNG' 。 $ QRlogo = $ QRlogoPath。$のQRコード。 $ QRlogo_B = $ QRlogoPath_B。$のQRコード。 もし($ logoQR!== FALSE ){ $ QR = imagecreatefromstring(のfile_get_contents($ QR )); $ロゴImagecreatefromstring =(のfile_get_contents($ logoQR )); $ QR_width = imagesx($ QR); // 二次元コードの画像幅 $ QR_height = imagesy($ QR); // Dバーコード像高 $ logo_width = imagesx($ロゴ) ; // ロゴ画像幅 $ logo_height = imagesy($ロゴ); // ロゴの像高 $ logo_qr_width = $ QR_width / 5 ; $スケール = $ logo_width / $ logo_qr_width ; $ logo_qr_height =logo_height $ / $スケール; $ from_width =($ QR_width - $のlogo_qr_width)/ 2 ; // 再結合画像とリサイズ imagecopyresampled($ QR、$ロゴ、$ from_width、$ from_width、0、0、$ logo_qr_width、 $ logo_qr_height、$ logo_width、$ logo_height ); ヘッダ( 'コンテンツタイプ:画像/ PNG' );
ロゴと//合成された二次元コード ImagePNG($ QR、$ QRlogo); $ Dst_path =」./Uploads/haibao/haibao.png '; // ポスター材料下敷き $ SRC_PATH = $ QRlogo ; // オーバーレイ、上の写真はQRlogoあると $ haibaoPath =' ./Uploads/qrcode / Haibao / ' DATE(Ymのの-D ')/ ''。' ; // $ haibaoPath_B =' /Uploads/qrcode/haibao/'.date('Ym-d').'/「; IF!(file_exists($ haibaoPath )){ MKDIR($ haibaoPath、0777 ); } $ Haibao = 時間()。 'PNG。' ; $ Haibao =haibaoPath $。$ Haibao ; // $ haibao_B = $ haibaoPath_B Haibao $ ;. //画像のインスタンスを作成 $のDST = imagecreatefromstring(のfile_get_contents($のdst_path)); // ポスター の$ SRC = imagecreatefromstring(のfile_get_contents($のSRC_PATHを)); / / 2次元コード //オーバーレイの幅と高さを取得 リスト($のsrc_wと、$のsrc_hは)= getimagesize($のSRC_PATHを); //は、ポスターの幅と高さを取得 リスト($ dst_w、$のdst_h)= getimagesize($のdst_path )。 // imagecopymerge($ DSTは、$ SRC、20、120、0、0、$用のsrc_w、$のsrc_h、100)。 imagecopymerge($ DST、$のSRC、($ dst_w - $用のsrc_w)/ 2、$ dst_h -100- $ src_h、0、0、$のsrc_w、$ src_h、100 )。 リスト($ dst_w、$ dst_h)= getimagesize($のdst_path )。 imagepng($ dstは、$のhaibao)。//合成画像を生成し、サーバのポスターに保存 imagedestroy($ DST ); imagedestroy($ SRC ); $ Haibao = SUBSTR($ Haibao、1); // 最初のポイントの少し左削除 の$ ARR [ 'MSGを'] = Haibao $ ; エコー json_encode($のARR); 出口; } }