java二维码生成与解析代码实现_第1页
java二维码生成与解析代码实现_第2页
java二维码生成与解析代码实现_第3页
java二维码生成与解析代码实现_第4页
java二维码生成与解析代码实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java二维码生成与解析代码实现java二维码生成与解析代码实现java二维码生成与解析代码实现java二维码生成与解析代码实现所需jar包:QRCode。jarTwoDimensionCode类:二维码操作核心类[java]

png",

7);

}

/**

生成二维码(QRCode)图片

*

@param

content

存储内容

@param

output

输出流

*/

public

void

encoderQRCode(String

content,

OutputStream

output)

this。encoderQRCode(content,

output,

"png",

7);

}

/**

*

生成二维码(QRCode)图片

@param

content

存储内容

*

@param

imgPath

图片路径

*

@param

imgType

图片类型

*/

public

void

encoderQRCode(String

content,

String

imgPath,

String

imgType)

{

this.encoderQRCode(content,

imgPath,

imgType,

7);

}

/**

*

生成二维码(QRCode)图片

*

@param

content

存储内容

*

@param

output

输出流

*

@param

imgType

图片类型

*/

public

void

encoderQRCode(String

content,

OutputStream

output,

String

imgType)

{

this。encoderQRCode(content,

output,

imgType,

7);

/**

生成二维码(QRCode)图片

@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);

}

catch

(Exception

e)

{

e.printStackTrace();

}

}

/**

生成二维码(QRCode)图片

@param

content

存储内容

*

@param

output

输出流

@param

imgType

图片类型

@param

size

二维码尺寸

*/

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);

}

catch

(Exception

e)

{

e.printStackTrace();

}

/**

*

生成二维码(QRCode)图片的公共方法

*

@param

content

存储内容

*

@param

imgType

图片类型

*

@param

size

二维码尺寸

@return

*/

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;

//

输出内容>

二维码

if

(contentBytes。length

>

0

&&

contentBytes.length

<

800)

{

boolean[][]

codeOut

=

qrcodeHandler.calQrcode(contentBytes);

for

(int

i

=

0;

i

codeOut.length;

i++)

for

(int

j

=

0;

j

codeOut。length;

j++)

{

if

(codeOut[j][i])

gs。fillRect(j

*

3

+

pixoff,

i

3

+

pixoff,

3,

3);

}

else

throw

new

Exception(”QRCode

content

bytes

length

=

"

+

contentBytes.length

+

not

in

[0,

800]。");

}

gs.dispose();

bufImg。flush();

}

catch

(Exception

e)

{

e。printStackTrace();

}

return

bufImg;

/**

*

解析二维码(QRCode)

*

@param

imgPath

图片路径

@return

*/

public

String

decoderQRCode(String

imgPath)

//

QRCode

二维码图片的文件

File

imageFile

=

new

File(imgPath);

BufferedImage

bufImg

=

null;

String

content

=

null;

try

bufImg

=

ImageIO.read(imageFile);

QRCodeDecoder

decoder

=

new

QRCodeDecoder();

content

=

new

String(decoder。decode(new

TwoDimensionCodeImage(bufImg)),

"utf-8”);

catch

(IOException

e)

{

System.out.println(”Error:

+

e.getMessage());

e。printStackTrace();

catch

(DecodingFailedException

dfe)

{

System。out.println(”Error:

+

dfe.getMessage());

dfe.printStackTrace();

return

content;

}

/**

解析二维码(QRCode)

*

@param

input

输入流

@return

*/

public

String

decoderQRCode(InputStream

input)

BufferedImage

bufImg

=

null;

String

content

=

null;

try

bufImg

=

ImageIO.read(input);

QRCodeDecoder

decoder

=

new

QRCodeDecoder();

content

=

new

String(decoder。decode(new

TwoDimensionCodeImage(bufImg)),

”utf-8”);

}

catch

(IOException

e)

{

System.out。println(”Error:

+

e。getMessage());

e.printStackTrace();

}

catch

(DecodingFailedException

dfe)

{

System.out.println("Error:

+

dfe.getMessage());

dfe.printStackTrace();

}

return

content;

public

static

void

main(String[]

args)

String

imgPath

=

"G:/TDDOWNLOAD/Michael_QRCode。png”;

String

encoderContent

=

”Hello

大大、小小,welcome

to

QRCode!”

+

”\nMyblog

[

aaa

]"

+

"\nEMail

bbb

]";

TwoDimensionCode

handler

=

new

TwoDimensionCode();

handler.encoderQRCode(encoderContent,

imgPath,

”png");

//

try

//

OutputStream

output

=

new

FileOutputStream(imgPath);

//

handler.encoderQRCode(content,

output);

//

}

catch

(Exception

e)

{

//

e.printStackTrace();

//

}

System.out.println("========encoder

success”);

String

decoderContent

=

handler.decoderQRCode(imgPath);

System.out.println("解析结果如下:");

System.out。println(decoderContent);

System.out。println(”========decoder

success!!!”);

T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论