首页编程java编程java二维码解析原理是什么,使用java如何运用混淆算法生成二维码

java二维码解析原理是什么,使用java如何运用混淆算法生成二维码

编程之家2023-10-1387次浏览

大家好,java二维码解析原理是什么相信很多的网友都不是很明白,包括使用java如何运用混淆算法生成二维码也是一样,不过没有关系,接下来就来为大家分享关于java二维码解析原理是什么和使用java如何运用混淆算法生成二维码的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

java二维码解析原理是什么,使用java如何运用混淆算法生成二维码

使用java如何运用混淆算法生成二维码

需要的jar: qrcode.jar和 qrcode_swetake.jar,以及一个工具类,下面有。

package com.sbm.wll.image;

/**

java二维码解析原理是什么,使用java如何运用混淆算法生成二维码

* Java生成二维码,解析二维码

*/

import java.awt.Color;

java二维码解析原理是什么,使用java如何运用混淆算法生成二维码

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如何运用混淆算法生成二维码的问题解决了您的问题,那么我们由衷的感到高兴!

java swing是什么意思(java中的swing什么意思)java中的感叹号是什么意思(在java编程中出现黄色感叹号怎么办)