当前位置:网站首页 > Java基础 > 正文

zxing java使用教程



public class Test{

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) { </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { QREncode(); QRReader(</span><span style="color: rgba(0, 0, 255, 1)">new</span> File("D:\zxing1.gif"<span style="color: rgba(0, 0, 0, 1)">)); } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (WriterException e) { e.printStackTrace(); } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (IOException e) { e.printStackTrace(); } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (NotFoundException e) { e.printStackTrace(); } } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 生成二维码 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> QREncode() <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> WriterException, IOException { String content </span>= "个人博客:https://www.cnblogs.com/huanzi-qch/";<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">二维码内容</span> <span style="color: rgba(0, 0, 255, 1)">int</span> width = 200; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图像宽度</span> <span style="color: rgba(0, 0, 255, 1)">int</span> height = 200; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图像高度</span> String format = "gif";<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图像类型</span> Map&lt;EncodeHintType, Object&gt; hints = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;&gt;<span style="color: rgba(0, 0, 0, 1)">(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内容编码格式</span> hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定纠错等级</span> 

hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置二维码边的空度,非负数</span> hints.put(EncodeHintType.MARGIN, 1<span style="color: rgba(0, 0, 0, 1)">); BitMatrix bitMatrix </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); MatrixToImageWriter.writeToPath(bitMatrix, format, </span><span style="color: rgba(0, 0, 255, 1)">new</span> File("D:\zxing.gif").toPath());<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 输出原图片</span> MatrixToImageConfig matrixToImageConfig = <span style="color: rgba(0, 0, 255, 1)">new</span> MatrixToImageConfig(0xFF000001, 0xFFFFFFFF<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 问题:生成二维码正常,生成带logo的二维码logo变成黑白 原因:MatrixToImageConfig默认黑白,需要设置BLACK、WHITE 解决:</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://ququjioulai.iteye.com/blog/</span> <span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)"> BufferedImage bufferedImage </span>= LogoMatrix(MatrixToImageWriter.toBufferedImage(bitMatrix,matrixToImageConfig), <span style="color: rgba(0, 0, 255, 1)">new</span> File("D:\logo.png"<span style="color: rgba(0, 0, 0, 1)">)); 

// BufferedImage bufferedImage = LogoMatrix(toBufferedImage(bitMatrix), new File(“D:\logo.png”));

 ImageIO.write(bufferedImage, "gif", <span style="color: rgba(0, 0, 255, 1)">new</span> File("D:\zxing1.gif"));<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">输出带logo图片</span> System.out.println("输出成功."<span style="color: rgba(0, 0, 0, 1)">); } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 识别二维码 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> QRReader(File file) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> IOException, NotFoundException { MultiFormatReader formatReader </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> MultiFormatReader(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">读取指定的二维码文件</span> BufferedImage bufferedImage =<span style="color: rgba(0, 0, 0, 1)">ImageIO.read(file); BinaryBitmap binaryBitmap</span>= <span style="color: rgba(0, 0, 255, 1)">new</span> BinaryBitmap(<span style="color: rgba(0, 0, 255, 1)">new</span> HybridBinarizer(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BufferedImageLuminanceSource(bufferedImage))); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">定义二维码参数</span> Map hints= <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;&gt;<span style="color: rgba(0, 0, 0, 1)">(); hints.put(EncodeHintType.CHARACTER_SET, </span>"utf-8"<span style="color: rgba(0, 0, 0, 1)">); com.google.zxing.Result result </span>=<span style="color: rgba(0, 0, 0, 1)"> formatReader.decode(binaryBitmap, hints); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">输出相关的二维码信息</span> System.out.println("解析结果:"+<span style="color: rgba(0, 0, 0, 1)">result.toString()); System.out.println(</span>"二维码格式类型:"+<span style="color: rgba(0, 0, 0, 1)">result.getBarcodeFormat()); System.out.println(</span>"二维码文本内容:"+<span style="color: rgba(0, 0, 0, 1)">result.getText()); bufferedImage.flush(); } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 二维码添加logo * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> matrixImage 源二维码图片 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> logoFile logo图片 * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> 返回带有logo的二维码图片 * 参考:</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://blog.csdn.net/weixin_/article/details/</span> <span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> BufferedImage LogoMatrix(BufferedImage matrixImage, File logoFile) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> IOException{ </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 读取二维码图片,并构建绘图对象 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)"> Graphics2D g2 </span>=<span style="color: rgba(0, 0, 0, 1)"> matrixImage.createGraphics(); </span><span style="color: rgba(0, 0, 255, 1)">int</span> matrixWidth =<span style="color: rgba(0, 0, 0, 1)"> matrixImage.getWidth(); </span><span style="color: rgba(0, 0, 255, 1)">int</span> matrixHeigh =<span style="color: rgba(0, 0, 0, 1)"> matrixImage.getHeight(); </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 读取Logo图片 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)"> BufferedImage logo </span>=<span style="color: rgba(0, 0, 0, 1)"> ImageIO.read(logoFile); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">开始绘制图片</span> g2.drawImage(logo,matrixWidth/5*2,matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5, <span style="color: rgba(0, 0, 255, 1)">null</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">绘制</span> BasicStroke stroke = <span style="color: rgba(0, 0, 255, 1)">new</span> BasicStroke(5<span style="color: rgba(0, 0, 0, 1)">,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); g2.setStroke(stroke);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置笔画对象 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">指定弧度的圆角矩形</span> RoundRectangle2D.Float round = <span style="color: rgba(0, 0, 255, 1)">new</span> RoundRectangle2D.Float(matrixWidth/5*2, matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5,20,20<span style="color: rgba(0, 0, 0, 1)">); g2.setColor(Color.white); g2.draw(round);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 绘制圆弧矩形 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置logo 有一道灰色边框</span> BasicStroke stroke2 = <span style="color: rgba(0, 0, 255, 1)">new</span> BasicStroke(1<span style="color: rgba(0, 0, 0, 1)">,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); g2.setStroke(stroke2);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置笔画对象</span> RoundRectangle2D.Float round2 = <span style="color: rgba(0, 0, 255, 1)">new</span> RoundRectangle2D.Float(matrixWidth/5*2+2, matrixHeigh/5*2+2, matrixWidth/5-4, matrixHeigh/5-4,20,20<span style="color: rgba(0, 0, 0, 1)">); g2.setColor(</span><span style="color: rgba(0, 0, 255, 1)">new</span> Color(128,128,128<span style="color: rgba(0, 0, 0, 1)">)); g2.draw(round2);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 绘制圆弧矩形</span> 

 g2.dispose(); matrixImage.flush() ; </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> matrixImage ; } 

}

  • 上一篇: twaver java 教程
  • 下一篇: java色教程
  • 版权声明


    相关文章:

  • twaver java 教程2025-10-17 18:02:00
  • java项目化教程课本2025-10-17 18:02:00
  • Java 基础语法 菜鸟教程2025-10-17 18:02:00
  • direct3d教程java2025-10-17 18:02:00
  • java自学找教程2025-10-17 18:02:00
  • java色教程2025-10-17 18:02:00
  • java servelet 教程2025-10-17 18:02:00
  • 小包java教程2025-10-17 18:02:00
  • java406教程全套2025-10-17 18:02:00
  • java7实用教程2025-10-17 18:02:00