首页 > 代码库 > 使用java解析和制作二维码
使用java解析和制作二维码
项目结构
文件源码 QR.zip
第一步:导入zxing的两个架包 core.jar和javase.jar
第二步:使用工具类 MatrixToImageWriter.java
1 package util; 2 import com.google.zxing.common.BitMatrix; 3 import javax.imageio.ImageIO; 4 import java.io.File; 5 import java.io.OutputStream; 6 import java.io.IOException; 7 import java.awt.image.BufferedImage; 8 public final class MatrixToImageWriter { 9 private static final int BLACK = 0xFF000000;10 private static final int WHITE = 0xFFFFFFFF;11 private MatrixToImageWriter() {12 }13 public static BufferedImage toBufferedImage(BitMatrix matrix) {14 int width = matrix.getWidth();15 int height = matrix.getHeight();16 BufferedImage image = new BufferedImage(width, height,17 BufferedImage.TYPE_INT_RGB);18 for (int x = 0; x < width; x++) {19 for (int y = 0; y < height; y++) {20 image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);21 }22 }23 return image;24 }25 public static void writeToFile(BitMatrix matrix, String format, File file)26 throws IOException {27 BufferedImage image = toBufferedImage(matrix);28 if (!ImageIO.write(image, format, file)) {29 throw new IOException("Could not write an image of format "30 + format + " to " + file);31 }32 }33 public static void writeToStream(BitMatrix matrix, String format,34 OutputStream stream) throws IOException {35 BufferedImage image = toBufferedImage(matrix);36 if (!ImageIO.write(image, format, stream)) {37 throw new IOException("Could not write an image of format "38 + format);39 }40 }41 }
第三步:创建二维码
package demo;import java.io.File;import java.util.Hashtable;import util.MatrixToImageWriter;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.common.BitMatrix;/** *将文字转换为二维码 */public class Encoder { public static void main(String[] args) throws Exception { String text = "http://www.tfgzs.com"; Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); // 内容所使用编码 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); BitMatrix bitMatrix = new MultiFormatWriter().encode(text,BarcodeFormat.QR_CODE, 300, 300, hints); // 生成二维码 MatrixToImageWriter.writeToFile(bitMatrix, "gif", new File("E:/123/new.gif")); System.out.println("二维码生成完成"); }}
第四步:解析二维码
package demo;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.NotFoundException;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.HybridBinarizer;/** * 将二维码解析为文字 */public class Decoder { public static void main(String[] args) { BufferedImage bufferedImage = null; try { bufferedImage = ImageIO.read(new File("E://123/qrcodeImage.png")); } catch (IOException e) { e.printStackTrace(); } LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Hashtable<DecodeHintType, String> hints = new Hashtable<DecodeHintType, String>(); hints.put(DecodeHintType.CHARACTER_SET, "GBK"); Result result = null; try { result = new MultiFormatReader().decode(bitmap, hints); } catch (NotFoundException e) { e.printStackTrace(); } System.out.println(result.toString()); }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。