第一種方法找網(wǎng)上的api接口
比如:聯(lián)圖
品味二維碼:
草料:
其他都可以在網(wǎng)上搜到很多,但是這些api可能過(guò)一段時(shí)間會(huì)失效,以前就遇到過(guò)這樣的情況,這就接口不可控性太大,所以我們要介紹第二種方法
二、用插件生成二維碼
這里使用的是PHPQRcode 新建函數(shù)(這里用的thinkPhp框架)
/**
* 生成二維碼
* @param $save_path 二維碼保存路徑
* @param string $qr_data 手機(jī)掃描后要跳轉(zhuǎn)的網(wǎng)址
* @param string $qr_level 默認(rèn)糾錯(cuò)比例 分為L(zhǎng)、M、Q、H四個(gè)等級(jí),H代表最高糾錯(cuò)能力
* @param int $qr_size 二維碼圖大小,1-10可選,數(shù)字越大圖片尺寸越大
* @param string $save_prefix 圖片名稱前綴
* @return bool|string
*/
function createQRcode($save_path, $qr_data = 'PHP QR Code :)', $qr_level = 'L', $qr_size = 4, $save_prefix = 'qrcode') {
if (!isset($save_path)) return '';
//設(shè)置生成png圖片的路徑
$PNG_TEMP_DIR = & $save_path;
//導(dǎo)入二維碼核心程序
vendor('PHPQRcode.class#phpqrcode'); //PHPQRcode是文件夾名字,class#phpqrcode就代表class.phpqrcode.php文件名
//檢測(cè)并創(chuàng)建生成文件夾
if (!file_exists($PNG_TEMP_DIR)) {
mkdir($PNG_TEMP_DIR);
}
$filename = $PNG_TEMP_DIR . 'test.png';
$errorCorrectionLevel = 'L';
if (isset($qr_level) && in_array($qr_level, array('L', 'M', 'Q', 'H'))) {
$errorCorrectionLevel = & $qr_level;
}
$matrixPointSize = 4;
if (isset($qr_size)) {
$matrixPointSize = & min(max((int)$qr_size, 1), 10);
}
if (isset($qr_data)) {
if (trim($qr_data) == '') {
die('data cannot be empty!');
}
//生成文件名 文件路徑+圖片名字前綴+md5(名稱)+.png
$filename = $PNG_TEMP_DIR . $save_prefix . md5($qr_data . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';
//開(kāi)始生成
QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
} else {
//默認(rèn)生成
QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
}
if (file_exists($PNG_TEMP_DIR . basename($filename))) {
return basename($filename);
} else {
return FALSE;
}
}
函數(shù)調(diào)用
$save_path = 'Qrcode/'; //圖片存儲(chǔ)的絕對(duì)路徑
$qr_data = C('PROTOCOL') . $_SERVER['SERVER_NAME'] . . '/Share/member.html?str=' . $member['mstr'];
$qr_level = 'H';
$qr_size = '10';
$save_prefix = 'ZETA';
$filename = createQRcode($save_path, $qr_data, $qr_level, $qr_size, $save_prefix);
if ($filename) {
$pic = . '/' . $save_path . $filename;
}
$this->pic = $pic;
如何在利用PHPQRcode生成的二維碼中間加上logo圖片呢
$logo = . $member['picture']; //logo的圖片地址
import("Org.Util.File");
$file = new \File($logo);
$logo = $file->getRealFile();
$file = new \File($pic);
$QR = $file->getRealFile();; //二維碼圖片地址
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_height = imagesy($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);
}
imagepng($QR, $save_path . $filename); //跟logo合并之后的地址
如沒(méi)特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://m.oulysa.com/news/5919.html