Atitit.二維碼功能的設計實踐 attilax 總結 1.1. 二維碼要實現的功能1 1.2. 現有二維碼功能設計不足的地方(待改進)1 1.3. 二維碼組件1 1.4. Java版 zxing類庫..2 1.5. Php版 laveral框架版3 1.6. Phpqrcode框架版3 1.7. ...
Atitit.二維碼功能的設計實踐 attilax 總結
1.1. 二維碼要實現的功能
顯示二維碼
保持二維碼圖片為文件
直接輸出二維碼圖片流
Img 的src為二維碼圖片
一般要傳遞order_id 或者一個url參數為主。
1.2. 現有二維碼功能設計不足的地方(待改進)
Java 與php的api 統一化
增加Js sdk
1.3. 二維碼組件
Prj eform
<a href="{{ url('/qrcodeQ5/qrcode.php?url='.base64_encode($url)) }}">
<img class="img-res bd" style="max-width:250px" src="{{ url('/qrcodeQ5/qrcode.php?url='.base64_encode($url)) }}" alt="...">
</a>
作者:: ★(attilax)>>> 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:[email protected]
轉載請註明來源: http://www.cnblogs.com/attilax/
1.4. Java版 zxing類庫..
#-----com.xx.share.sharex.java
public String gene(String code) {
String qrcodedir = "qrcodeO5/"+filex.getUUidName()+".jpg";
String path=pathx.webAppPath() + "/" + qrcodedir;
filex.createAllPath(path);
core.log("--qrcode path:"+path);
// attilax 老哇的爪子 下午5:30:42 2014年5月11日
qrcodex. gene(code, path, 250, 250);
return qrcodedir;
}
#----com.attilax.qrcode.qrcodex.javar
public static void gene(final String content, final String path,
final int width, final int height) {
new tryX<Object>() {
@Override
public Object item(Object t) throws Exception {
// attilax 老哇的爪子 下午5:23:26 2014年5月11日
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, width, height,hints);
File file1 = new File(path );
MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1);
return null;
}
}.$("");
}
1.5. Php版 laveral框架版
ob_clean();//清除輸出
$image=QrCode::format('png')->merge('/public/'.CDN_IMG.'logo.png', .3)->margin(2)->size(200)->color(0,0,0)->backgroundColor(255,255,255)->encoding('UTF-8')->generate($url);
return response()->make($image, 200, [
'content-type' => 'image/png',
]);
1.6. Phpqrcode框架版
<?php
$url=base64_decode($_GET["url"]);
include 'phpqrcode/phpqrcode.php';
//QRcodeQ5::png('code data text', 'filename.png'); // creates file
QRcodeQ5::png($url);
//QRcodeQ5::png('some othertext 1234'); // creates code image and outputs it directly into browser
//輸出圖片
//imagepng($QR, 'helloweixin.png');
?>
1.7. Qa集合與註意事項
輸出png的圖片不能正常顯示,這個通常是bom頭造成的,某一個類庫php是utf8格式的,而生成qrcode的php界面include了它。。。最簡單的解決方案是
先用 ob_clean();//清除輸出,一般就可,但在laveral框架下,任然不可。。
就把生成qrcode的php組件獨立出來,然後通過img的src調用。。即可。。
參考
atitit.二維碼生成總結java zxing - attilax的專欄 - 博客頻道 - CSDN.NET.html