詳解使用zxing庫生成QR-Code二維碼
詳解使用zxing庫生成QR-Code二維碼
最近因為一些工作需要,需要根據(jù)實際的信息生成QR-Code二維碼圖片文件,自然想到zxing庫了,具體的代碼很簡單,做個備忘。
首先是引入zxing庫,我是使用maven構建項目的,添加依賴:
<dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency>
然后是測試樣列代碼:
import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; /** * 使用zxing庫生成QRCode二維碼樣例程序 * * @author 阿信sxq * */ public class QrcodeDemo { public static void main(String[] args) { new QrcodeDemo().genQrcode("https://my.oschina.net/songxinqiang"); } public void genQrcode(String message) { //輸出目標文件 File file = new File("E:\\qrcode.png"); if (!file.exists()) { try { file.mkdirs(); file.createNewFile(); } catch (IOException e) {} } //設置參數(shù),輸出文件 Map<EncodeHintType, String> hints = new HashMap<>(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); try { BitMatrix bitMatrix = new MultiFormatWriter().encode(message, BarcodeFormat.QR_CODE, 300, 300, hints);// 生成矩陣 MatrixToImageWriter.writeToPath(bitMatrix, "png", file.toPath());// 輸出圖像 } catch (Exception e) {} } }
這里是為了做演示,內容直接生成的我空間的地址,并且目標文件也是現(xiàn)在家里使用的windows 的文件位置,在具體實際的使用中需要具體修改。
生成的圖片是:
(調整過大?。?/p>
在這里需要說明的是,二維碼中的點的大小會隨二維碼文字內容的多少自動變化,所以在文字內容很多的時候需要把圖片的尺寸調大,否則點太小了,一般的手機掃描起來很吃力
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
MybatisPlus?構造器wrapper的使用與原理解析
本次我們介紹了MybatisPlus?構造器wrapper的使用方式及其易錯點,同時也針對其運行的原理進行了解釋,只有深刻理解了它的原理,我們才能更靈活的使用,并且更快的排查出問題,感興趣的朋友跟隨小編一起看看吧2024-05-05Spring之spring-context-indexer依賴詳解
這篇文章主要介紹了Spring之spring-context-indexer依賴詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Mybatis使用@one和@Many實現(xiàn)一對一及一對多關聯(lián)查詢
本文主要介紹了Mybatis使用@one和@Many實現(xiàn)一對一及一對多關聯(lián)查詢,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09圖解Java?ReentrantLock的條件變量Condition機制
想必大家都使用過wait()和notify()這兩個方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對于synchronized?更加強大,能夠支持多個條件變量,本文就來詳細說說2022-10-10