【轉】QRCode二維碼的應用心得


http://frankman.blog.163.com/blog/static/3780069920113169555147/

要使用二維條碼來存放更多的可壓縮信息,本着前人栽樹后人乘涼的原則,選擇從網上下載開源的工具進行再利用。因此選擇了日本人開發的一套二維條碼實現,網上也提供了很多的例子,不過很多jar包都是只包含解析二維碼的功能,而不包含生成二維碼的功能。

JavaEye上面倒是有一個整合了的jar包,不過已經忘記出自那個帖子,這里我就提供一個整合的jar包下載,借花獻佛了。嘿嘿

http://www.yimuhe.com/filedown.php?id=167916

網上的例子都比較好,不過就是沒有比較詳細講解關於QRCode二維碼生成的規則和要點。例如:為什么要在生成二維碼的時候,判斷字符集的長度要小於128。要知道二維碼信息容量大:可容納多達1850個大寫字母或2710個數字或1108個字節,或500多個漢字,比普通條碼信息容量約高幾十倍。如果控制壓縮內容在128個以內的話,那么二維碼的優勢哪里去了?

經過多次測試發現,二維碼所能包含的字符信息量是由QrcodeVersion的設置值來決定的。將QrcodeVersion設置到20的時候,就已經可以容乃到300多個字節。

如果你以為這樣就解決了問題的話,那么就錯了,嘿嘿。如果只是修改了QrcodeVersion的值,解決的僅僅是字符集容量的問題,可是這樣生成的圖片無法解碼。可是把字符容量控制在128個以內的時候,就可以正常的解碼。難道日本人寫的東西會有這么多的問題,網上搜來搜去,只能找到幾個難兄難弟,但是沒有找到解決的方法。

無意中打開生成的圖片一看才發現了問題,生成的二維碼圖片的大小是會根據所壓縮的信息內容而變化的,網上提供的例子是通過new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);來創建圖像對象的,默認的情況下圖片的大小是139*139,這個大小是比較適合QrcodeVersion為7的情況。將圖片的大小設置到300*300就可以很好的支持QrcodeVersion為20的情況,並且可以正常的解碼。

QrcodeVersion的范圍值是0-40,0的含義是表示壓縮的信息量將會根據實際傳入值確定,只有最高上限的控制,而且圖片的大小將會根據信息量自動縮放。1-40的范圍值,則有固定的信息量上限,而且圖片的大小會固定在一個大小上,不會根據信息量的多少而變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM