Java 生成二維碼實戰(zhàn)

簡介

ZXing 是一個開源 Java 類庫用于解析多種格式的 1D/2D 條形碼谴古。目標是能夠?qū)R編碼狸剃、Data Matrix怯屉、UPC的1D條形碼進行解碼抛猫。其提供了多種平臺下的客戶端包括:J2ME贼陶、J2SE和Android刃泡。
官網(wǎng):ZXing github倉庫

實戰(zhàn)

本例演示如何在一個非 android 的 Java 項目中使用 ZXing 來生成、解析二維碼圖片碉怔。

安裝

maven項目只需引入依賴:

<dependency>
  <groupId>com.google.zxing</groupId>
  <artifactId>core</artifactId>
  <version>3.3.0</version>
</dependency>
<dependency>
  <groupId>com.google.zxing</groupId>
  <artifactId>javase</artifactId>
  <version>3.3.0</version>
</dependency>

如果非maven項目烘贴,就去官網(wǎng)下載發(fā)布版本:下載地址

生成二維碼圖片

ZXing 生成二維碼圖片有以下步驟:

1、com.google.zxing.MultiFormatWriter 根據(jù)內(nèi)容以及圖像編碼參數(shù)生成圖像2D矩陣撮胧。
2桨踪、com.google.zxing.client.j2se.MatrixToImageWriter 根據(jù)圖像矩陣生成圖片文件或圖片緩存 BufferedImage 。

public void encode(String content, String filepath) throws WriterException, IOException {
  int width = 100;
  int height = 100;
  Map<EncodeHintType, Object> encodeHints = new HashMap<EncodeHintType, Object>();
  encodeHints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
  BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, encodeHints);
  Path path = FileSystems.getDefault().getPath(filepath);
  MatrixToImageWriter.writeToPath(bitMatrix, "png", path);
}

解析二維碼圖片

ZXing 解析二維碼圖片有以下步驟:
1芹啥、使用 javax.imageio.ImageIO 讀取圖片文件锻离,并存為一個 java.awt.image.BufferedImage對象。
2墓怀、將 java.awt.image.BufferedImage 轉(zhuǎn)換為 ZXing 能識別的com.google.zxing.BinaryBitmap 對象汽纠。
3、com.google.zxing.MultiFormatReader 根據(jù)圖像解碼參數(shù)來解析com.google.zxing.BinaryBitmap 捺疼。

public String decode(String filepath) throws IOException, NotFoundException {
  BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath));
  LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage);
  Binarizer binarizer = new HybridBinarizer(source);
  BinaryBitmap bitmap = new BinaryBitmap(binarizer);
  HashMap<DecodeHintType, Object> decodeHints = new HashMap<DecodeHintType, Object>();
  decodeHints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
  Result result = new MultiFormatReader().decode(bitmap, decodeHints);
  return result.getText();
}
在這里插入圖片描述

歡迎關(guān)注我的微信公眾號「碼農(nóng)突圍」疏虫,分享Python、Java啤呼、大數(shù)據(jù)卧秘、機器學(xué)習(xí)、人工智能等技術(shù)官扣,關(guān)注碼農(nóng)技術(shù)提升?職場突圍?思維躍遷翅敌,20萬+碼農(nóng)成長充電第一站,陪有夢想的你一起成長

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惕蹄,一起剝皮案震驚了整個濱河市蚯涮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卖陵,老刑警劉巖遭顶,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泪蔫,居然都是意外死亡棒旗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門撩荣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铣揉,“玉大人饶深,你說我怎么就攤上這事」涔埃” “怎么了敌厘?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朽合。 經(jīng)常有香客問我俱两,道長,這世上最難降的妖魔是什么旁舰? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任锋华,我火速辦了婚禮嗡官,結(jié)果婚禮上箭窜,老公的妹妹穿的比我還像新娘。我一直安慰自己衍腥,他們只是感情好磺樱,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著婆咸,像睡著了一般竹捉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尚骄,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天块差,我揣著相機與錄音,去河邊找鬼倔丈。 笑死憨闰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的需五。 我是一名探鬼主播鹉动,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宏邮!你這毒婦竟也來了泽示?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蜜氨,失蹤者是張志新(化名)和其女友劉穎械筛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飒炎,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡埋哟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厌丑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片定欧。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡渔呵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砍鸠,到底是詐尸還是另有隱情扩氢,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布爷辱,位于F島的核電站录豺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饭弓。R本人自食惡果不足惜双饥,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弟断。 院中可真熱鬧咏花,春花似錦、人聲如沸阀趴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刘急。三九已至棚菊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叔汁,已是汗流浹背统求。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留据块,地道東北人码邻。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像瑰钮,于是被迫代替她去往敵國和親冒滩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349