詳解使用zxing庫(kù)生成QR-Code二維碼
詳解使用zxing庫(kù)生成QR-Code二維碼
最近因?yàn)橐恍┕ぷ餍枰?,需要根?jù)實(shí)際的信息生成QR-Code二維碼圖片文件,自然想到zxing庫(kù)了,具體的代碼很簡(jiǎn)單,做個(gè)備忘。
首先是引入zxing庫(kù),我是使用maven構(gòu)建項(xiàng)目的,添加依賴:
<dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency>
然后是測(cè)試樣列代碼:
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庫(kù)生成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) {
//輸出目標(biāo)文件
File file = new File("E:\\qrcode.png");
if (!file.exists()) {
try {
file.mkdirs();
file.createNewFile();
} catch (IOException e) {}
}
//設(shè)置參數(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) {}
}
}
這里是為了做演示,內(nèi)容直接生成的我空間的地址,并且目標(biāo)文件也是現(xiàn)在家里使用的windows 的文件位置,在具體實(shí)際的使用中需要具體修改。
生成的圖片是:

(調(diào)整過大?。?/p>
在這里需要說明的是,二維碼中的點(diǎn)的大小會(huì)隨二維碼文字內(nèi)容的多少自動(dòng)變化,所以在文字內(nèi)容很多的時(shí)候需要把圖片的尺寸調(diào)大,否則點(diǎn)太小了,一般的手機(jī)掃描起來(lái)很吃力
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
java?Semaphore共享鎖實(shí)現(xiàn)原理解析
這篇文章主要為大家介紹了Semaphore共享鎖實(shí)現(xiàn)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉
本文主要介紹了Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
提交gRPC-spring-boot-starter項(xiàng)目bug修復(fù)的pr說明
這篇文章主要介紹了這篇文章主要為大家介紹了gRPC-spring-boot-starter項(xiàng)目提交bug修復(fù)的pr的原因說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
RocketMQ NameServer保障數(shù)據(jù)一致性實(shí)現(xiàn)方法講解
這篇文章主要介紹了RocketMQ NameServer保障數(shù)據(jù)一致性實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Java數(shù)組的特性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
數(shù)組是基本上所有語(yǔ)言都會(huì)有的一種數(shù)據(jù)類型,它表示一組相同類型的數(shù)據(jù)的集合,具有固定的長(zhǎng)度,并且在內(nèi)存中占據(jù)連續(xù)的空間。在C,C++等語(yǔ)言中,數(shù)組的定義簡(jiǎn)潔清晰,而在Java中確有一些會(huì)讓人迷惑的特性。本文就嘗試分析這些特性2017-04-04
一文掌握SpringSecurity?BCrypt密碼加密和解密
BCrypt就是一款加密工具,可以比較方便地實(shí)現(xiàn)數(shù)據(jù)的加密工作。也可以簡(jiǎn)單理解為它內(nèi)部自己實(shí)現(xiàn)了隨機(jī)加鹽處理,這篇文章主要介紹了SpringSecurity?BCrypt密碼加密和解密,一文學(xué)會(huì)使用BCryptPasswordEncoder的方法,需要的朋友可以參考下2023-04-04
在SpringMVC框架下實(shí)現(xiàn)文件的上傳和下載示例
本篇文章主要介紹了在SpringMVC框架下實(shí)現(xiàn)文件的上傳和下載示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02

