Java 二维码及条形码处理
Maven依赖
<dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.4.1</version>
</dependency>
二维码
生成二维码
import java.io.FileOutputStream;
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;public class DemoTest {public static void main(String[] args) throws Exception {// 二维码原理(将字符串信息通过一规则转换为图像)// 生成二维码String name = "d:/my.png";String content = "wwww.hcitlife.show";int width = 400;int height = 400;// BitMatrix bm = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height);Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();hints.put(EncodeHintType.MARGIN, 2);hints.put(EncodeHintType.CHARACTER_SET, "utf-8");BitMatrix bm = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);MatrixToImageWriter.writeToStream(bm, "png", new FileOutputStream(name));// BufferedImage bar = ImageIO.read(new File(name));// 解压读取二维码}}
结果:
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;import javax.imageio.ImageIO;import java.awt.Color;
import java.awt.image.BufferedImage;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;public class DemoTest {public static void main(String[] args) throws Exception {// 二维码原理(将字符串信息通过一规则转换为图像)// 生成二维码String name = "d:/my.png";String content = "www.hcitlife.show";int width = 400;int height = 400;// BitMatrix bm = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE,// width, height);Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();hints.put(EncodeHintType.MARGIN, 2);hints.put(EncodeHintType.CHARACTER_SET, "utf-8");BitMatrix bm = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);MatrixToImageWriter.writeToStream(bm, "png", new FileOutputStream(name));BufferedImage bar = ImageIO.read(new File(name));BufferedImage ok = new BufferedImage(width, height, 1);ok.getGraphics().drawImage(bar, 0, 0, width, height, null);// System.out.println(String.format("%x", Color.RED.getRGB()));// int[][] px = new int[width][height];Random rand = new Random();Color c = new Color(rand.nextInt(255), rand.nextInt(255), rand.nextInt(255), rand.nextInt(255));for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {ok.setRGB(x, y, bar.getRGB(x, y) == -1 ? 0xffffffff : c.getRGB());}// if(x>5) break;}ImageIO.write(ok, "png", new File("d:/mymy.png"));// BufferedImage bar = ImageIO.read(new File(name));// 解压读取二维码System.out.println("end");}}
解析二维码
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;public class DemoTest {public static void main(String[] args) throws Exception {// 解析读取二维码//解析图像BufferedImage i = ImageIO.read(new File("c:/my.png"));LuminanceSource source = new BufferedImageLuminanceSource(i);BinaryBitmap image = new BinaryBitmap(new HybridBinarizer(source));try{Result result = new MultiFormatReader().decode(image);String info = result.getText();System.out.println(info);if(info==null || "".equals(info)){System.out.println("没有二维码信息");}else if(info.contains("weixin")){ //qq mpSystem.out.println("有微信二维码,不允许");}else{System.out.println("有二维,可以使用");}}catch(Exception e){System.out.println("图像中没有二维码");}}}
条形码
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;public class DemoTest {public static void main(String[] args) throws Exception {// 生成产品条码效果String name = "d:/bar.png";String content = "6923790798701";int width = 300;int height = 100;BitMatrix bm = new MultiFormatWriter().encode(content, BarcodeFormat.EAN_13, width, height);MatrixToImageWriter.writeToStream(bm, "png", new FileOutputStream(name));BufferedImage bar2 = ImageIO.read(new File(name));BufferedImage bar = new BufferedImage(bar2.getWidth(), bar2.getHeight() + 30, 1);Graphics2D g = bar.createGraphics();g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);g.setColor(Color.WHITE);g.fillRect(0, 0, bar2.getWidth(), bar2.getHeight() + 30);g.drawImage(bar2, 0, 15, bar2.getWidth(), bar2.getHeight(), null);g.fillRect(62, 100, 85, 15);g.fillRect(155, 100, 83, 15);g.setColor(Color.BLACK);g.setFont(new Font("", Font.PLAIN, 22));g.drawString(content.substring(0, 1), 40, 120);g.drawString(content.substring(1, 7), 68, 120);g.drawString(content.substring(7), 158, 120);g.dispose();ImageIO.write(bar, "png", new File("c:/bar2.png"));}}
Java 二维码及条形码处理相关推荐
- Java代码小demon(一)SpringBoot+二维码和条形码生成
1. 简介 原由 需要一个工具类,可以将数据存储在二维码中,通过扫一扫可以获取到信息,条形码不能接受中文字符 收藏和转载以及自己应用时拓展,具体实现和底层原理还不会,有时间我会去了解或者忘记 借鉴博客 ...
- java-zxing扫描二维码和条形码(一维码)
安装zxing 导入jar包不需要dll 扫描 package zxing;import java.awt.Image; import java.awt.image.BufferedImage; im ...
- Android ZXing二维码、条形码的生成,扫一扫demo
目录 导语 一.ZXing简介 二.ZXing方法类源码 BarcodeFormat:条形码格式类 EncodeHintType:编码显示风格 三.ZXing使用实战小案例 生成二维码 生成条形码 四 ...
- Android ZXing 二维码、条形码扫描介绍
最近公司的Android项目需要用到摄像头做条码或二维码的扫描,Google一下,发现一个开源的 ZXing项目.它提供二维码和条形码的扫描.扫描条形码就是直接读取条形码的内容,扫描二维码是按照自己指 ...
- 二维码、条形码扫描——使用Google ZXing
我在项目中用到了二维码扫描的技术,用的是Google提供的ZXing开源项目,它提供二维码和条形码的扫描.扫描条形码就是直接读取条形码的内容,扫描二维码是按照自己指定的二维码格式进行编码和解码. 可以 ...
- OpenCV(项目)二维码识别(二维码、条形码)
目录 过程 1.获取图片中的二维码信息 2.获取视频中的二维码信息 3.检测出二维码框 4.显示数据 5.添加数据,判断二维码是否授权 5-1:.添加数据 5-2.读取文件信息,放入数组 5-3.判断 ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...
- 【opencv有趣应用】二维码和条形码的检测
今天学习下使用opencv进行条形码和二维码的检测 import cv2 import numpy as np from pyzbar.pyzbar import decodedef cv_show_ ...
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍 这里我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream o ...
- Vue 移动端实现调用相机扫描二维码或条形码
一.开发前的准备 实现二维码或条形码的扫描识别比较普遍的做法是去调用微信 JS-SDK 的扫一扫功能(详见 概述 | 微信开放文档),或者支付宝 H5 开放的API(详见?支付宝H5开放文档). 但是 ...
最新文章
- ZJU-java进阶笔记 第七周(输入输出)
- C#模糊查询绑定datagridview
- php接口图片转二进制,怎么在php项目中对图片进行二进制转换
- SpringMVC-组件分析之视图解析器(prefix,suffix)
- 致力协同办公oa系统服务器设置,致力协同办公oa系统安装手册新.pdf
- “新基建”横空出世,9本书助你把握7+2大领域风口
- 车联网发展对汽车经销商的影响
- HDMI 2.0高速电平转换芯片——LK361S20
- 模块四:应急预案参考模板
- oracle多表关联索引用法,关联表查询和索引使用的探讨一则
- 基本粒子群算法matlab 程序
- Arc consistency in CSPs
- 如何正确使用短信验证码
- 指标公式c语言源码下载,【通达信】九全指标-指标公式源码
- 微信PC(windows微信)HOOK
- 深度分析红米note9和华为nova8哪个好-红米note9和华为nova8区别
- 微信公众平台开发——群发信息
- mysql5.5手册读书日记(2)
- python 权限认证 impala_python操作具有kerberos认证的hive(impala)
- 哔咔服务器维护时间,哔咔