使用ZXing生成二维码

首先去Zxing官网下载jar包

我使用的是2.2的版本。。


直接看代码吧

/**
	 * 不带图片的二维码
	 *  encode(String content, int width, int height,String destImagePath,String type,String path)
	 * @param content  内容
	 * @param width 高宽
	 * @param height
	 * @param destImagePath 生成二维码的名字加路径
	 * @param type 生成的类型 :png,jpg等
	 * @param path 生成的路径
	 */
	  public static void encode(String content, int width, int height,
				 String destImagePath,String type) {
		  try {
			     MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
			     Map hints = new HashMap();
			     hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
			     BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, width, height,hints);
			     File file1 = new File(destImagePath);
			     BarcodeFactory.writeToFile(bitMatrix, type, file1);

			 } catch (Exception e) {
			     e.printStackTrace();
			 }
	  }
	  
	 private static final int BLACK = 0xFF000000;
	  private static final int WHITE = 0xFFFFFFFF;

	  private BarcodeFactory() {}
	  public static BufferedImage toBufferedImage(BitMatrix matrix) {
	    int width = matrix.getWidth();
	    int height = matrix.getHeight();
	    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	    for (int x = 0; x < width; x++) {
	      for (int y = 0; y < height; y++) {
	        image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
	      }
	    }
	    return image;
	  }

	  public static void writeToFile(BitMatrix matrix, String format, File file)
	      throws IOException {
	    BufferedImage image = toBufferedImage(matrix);
	    if (!ImageIO.write(image, format, file)) {
	      throw new IOException("Could not write an image of format " + format + " to " + file);
	    }
	  }

	  public static void writeToStream(BitMatrix matrix, String format, OutputStream stream)
	      throws IOException {
	    BufferedImage image = toBufferedImage(matrix);
	    if (!ImageIO.write(image, format, stream)) {
	      throw new IOException("Could not write an image of format " + format);
	    }
	  }

就这样  我也是看dome做的。。应该不是很难懂

下面看下解析二维码

/**
	   * 解析二维码
	   * @param destImagePath  图片加地址
	   */
	  public static String getImage(String destImagePath){
		BufferedImage image;
		try {
			image = ImageIO.read(new File(destImagePath));
			LuminanceSource source = new BufferedImageLuminanceSource(image);
			Binarizer binarizer = new HybridBinarizer(source);
			BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
			Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
			hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
			Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码
			System.out.println(result.getText());
			System.out.println("图片中格式: "+ result.getBarcodeFormat());
			return result.getText();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NotFoundException e) {
			e.printStackTrace();
		}
		return null;
	}

result.getText()
就是二维码中的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值