java二维码解析原理是什么,使用java如何运用混淆算法生成二维码
大家好,java二维码解析原理是什么相信很多的网友都不是很明白,包括使用java如何运用混淆算法生成二维码也是一样,不过没有关系,接下来就来为大家分享关于java二维码解析原理是什么和使用java如何运用混淆算法生成二维码的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
使用java如何运用混淆算法生成二维码
需要的jar: qrcode.jar和 qrcode_swetake.jar,以及一个工具类,下面有。
package com.sbm.wll.image;
/**
* Java生成二维码,解析二维码
*/
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.exception.DecodingFailedException;
public class Image{
/**
*生成二维码图片文件
*
*@param content
*存储内容
*@param imgPath
*图片路径
*@param imgType
*图片类型
*@param size
*二维码尺寸
*/
public void encoderQRCode(String content, String imgPath, String imgType, int size){
try{
BufferedImage bufImg= this.qRCodeCommon(content, imgType, size);
File imgFile= new File(imgPath);
//生成二维码QRCode图片
ImageIO.write(bufImg, imgType, imgFile);
System.out.println("二维码生成成功,路径:"+ imgPath);
} catch(Exception e){
e.printStackTrace();
}
}
/**
*生成二维码,流输出
*/
public void encoderQRCode(String content, OutputStream output, String imgType, int size){
try{
BufferedImage bufImg= this.qRCodeCommon(content, imgType, size);
//生成二维码QRCode图片
ImageIO.write(bufImg, imgType, output);
System.out.println("二维码生成成功,流输出");
} catch(Exception e){
e.printStackTrace();
}
}
/**
*生成二维码(QRCode)图片的基本方法
*/
private BufferedImage qRCodeCommon(String content, String imgType, int size){
BufferedImage bufImg= null;
try{
Qrcode qrcodeHandler= new Qrcode();
//设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
qrcodeHandler.setQrcodeErrorCorrect('M');
qrcodeHandler.setQrcodeEncodeMode('B');
//设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
qrcodeHandler.setQrcodeVersion(size);
//获得内容的字节数组,设置编码格式
byte[] contentBytes= content.getBytes("utf-8");
//图片尺寸
int imgSize= 67+ 12*(size- 1);
bufImg= new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);
Graphics2D gs= bufImg.createGraphics();
//设置背景颜色
gs.setBackground(Color.WHITE);
gs.clearRect(0, 0, imgSize, imgSize);
//设定图像颜色> BLACK
gs.setColor(Color.BLACK);
//设置偏移量,不设置可能导致解析出错
int pixoff= 2;
//输出内容>二维码
曲靖java培训学校告诉你你知道二维码是怎么得来的吗
二维码大家早就熟悉得不能再熟悉了,而且现在很多伙伴看到二维码都想拿出手里来扫一扫,说不定还真有惊喜呢。还有现在向商家付款都习惯性的扫二维码了,真是非常的方便。二维码已经深深地侵入了我们的生活,成了我们生活中,但是小伙伴们,你们知二维码是怎么生成的吗?曲靖北大青鸟http://www.kmbdqn.cn/建议不知道就好好看看下文吧!
1、二维码概念
二维条码/二维码(2-dimensionalbarcode)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
2、二维码分类
二维码是一种比一维码更高级的条码格式。一维码只能在一个方向(一般是水平方向)上表达信息,而二维码在水平和垂直方向都可以存储信息。一维码只能由数字和字母组成,而二维码能存储汉字、数字和图片等信息,因此二维码的应用领域要广得多。
A、堆叠式/行排式
其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code16K、Code49、PDF417、MicroPDF417等
B、矩阵式二维码
在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:CodeOne、MaxiCode、QRCode、DataMatrix、HanXinCode、GridMatrix等。
怎么使用java生成DataMatrix格式的二维码
使用第三方库来实现比较容易,参考如下使用Spire.Barcode for Java(需要下载jar包,解压并将lib文件夹下的Spire.Barcode.jar导入java程序)来生成DataMatrix二维码的方法:
import com.spire.barcode.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class CreateQR{
public static void main(String[] args) throws IOException{
BarcodeSettings settings= new BarcodeSettings();//创建BarcodeSettings实例
settings.setType(BarCodeType.Data_Matrix);//设置QR二维码类型
settings.setData("Hello 123456789");//设置二维码数据
settings.setData2D("Hello 123456789");//设置二维码显示数据
settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);//设置数据类型
settings.setImageWidth(50);//设置生成的二维码图片宽度
settings.setImageHeight(50);//设置生成的二维码图片高度
settings.setX(3.0f);//设置二维码模型宽度
settings.setQRCodeECL(QRCodeECL.H);//设置二维码纠错级别
settings.hasBorder(false);//设置二维码边框不可见
BarCodeGenerator barCodeGenerator= new BarCodeGenerator(settings);//创建BarCodeGenerator实例
BufferedImage bufferedImage= barCodeGenerator.generateImage();//根据settings生成图像数据,保存至BufferedImage实例
ImageIO.write(bufferedImage,"png", new File("DataMatrix.png"));//保存二维码图片为PNG格式
System.out.println("Complete!");
}
}
文章到此结束,如果本次分享的java二维码解析原理是什么和使用java如何运用混淆算法生成二维码的问题解决了您的问题,那么我们由衷的感到高兴!