- 安裝擴充套件
由於YII框架有composer,應付個小小的二維碼,不成問題。(如果還不知道composer,請自行查閱點選開啟連結),我們只要執行命令列
composer require 2amigos/yii2-qrcode-helper
或者在 composer.json
中新增 2amigos/yii2-qrcode-helper
再此之前建議您使用阿里雲composer映象。
阿里雲映象地址為developer.aliyun.com/composer按步驟安裝即可。安裝完成後進行下一步。
2.程式碼參考
<?php
namespace commonlib;
use DaQrCodeContractsErrorCorrectionLevelInterface;
use DaQrCodeExceptionInvalidPathException;
use DaQrCodeQrCode;
use Yii;
class QrCodeLib
{
/**
* 獲取二維碼
* @param string $content
* @param int $size
* @return void
*/
public static function getQrCode($content = '', $size = 300)
{
header('Content-Type: image/png');//解決輸出亂碼
$qrCode = new QrCode($content);
$qrCode->setSize($size);
$code = $qrCode->writestring();
exit($code);
}
/**
* 獲取帶logo的二維碼
* @param string $content
* @param string $logoAddress 入口web下的檔案
* @param int $size
* @param int $margin
* @param int $logoWidth
* @return void
*/
public static function getQrCodeWithLogo($content = '', $logoAddress = '', $size = 300, $margin = 5, $logoWidth = 65)
{
header('Content-Type: image/png');//防止亂碼
try {
$code = (new QrCode($content, ErrorCorrectionLevelInterface::HIGH))
->useLogo($logoAddress)
->useEncoding('UTF-8')
->setSize($size)
->setMargin($margin)
->setLogoWidth($logoWidth)
->writestring();
exit($code);
} catch (InvalidPathException $e) {
print_r('生成二維碼失敗' . $e->getMessage());
}
}
/**
* 獲取二維碼base64
* @param string $content
* @param int $size
* @return void
*/
public static function getQrCodeBase64($content = '', $size = 300) {
$qrCode = new QrCode($content);
$qrCode->setSize($size);
$code = $qrCode->writestring();
//使用base64_encode變成編碼字串
$imageString = base64_encode($code);
return json_encode(['png'=>'data:image/png;base64,' . $imageString]);
//如果直接輸出,用exit
// exit();
}
/**
* 上傳到oss
* @param string $content
* @param int $size
* @param string $path
* @param string $type
* @return bool|string
*/
public static function getQrCodeUploadOss($content = '', $size = 300, $path = './', $type = 'png') {
$qrCode = new QrCode($content);
$qrCode->setSize($size);
$code = $qrCode->writestring();
//使用base64_encode變成編碼字串
$imageString = base64_encode($code);
if (!is_dir($path)) {
//檢查是否有該資料夾,如果沒有就建立,並給予最高許可權
mkdir($path, 0777,true);
}
$keyName = date('Ymd'). md5(uniqid(microtime(true),true)) . "_".rand(100,9999) . ".{$type}";
$ossUrl = Yii::$app->params['environment'] . '/****/' . date('Ym') . '/' . date('md') . '/' . $keyName;
$newFile = $path . $keyName;
if (file_put_contents($newFile, base64_decode($imageString))){
$objOss= new Aliyunoss();
if($objOss::upFile($keyName, $ossUrl, $objOss::HASH_KEY_PIC )){
unlink($newFile);
return $objOss::readFile(Aliyunoss::HASH_KEY_PIC, $ossUrl, 36000);
} else {
unlink($newFile);
return false;
}
}else{
}
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結