當前位置:編程學習大全網 - 源碼下載 - 求壹個用Java編的二維碼生成識別的demo,希望內容完整點,萬分感謝

求壹個用Java編的二維碼生成識別的demo,希望內容完整點,萬分感謝

在java工程裏面導入QRCode.JAR包?

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?jp.sourceforge.qrcode.QRCodeDecoder;

import?jp.sourceforge.qrcode.exception.DecodingFailedException;

import?com.swetake.util.Qrcode;

public?class?TwoDimensionCode?{

/**

?*?生成二維碼(QRCode)圖片

?*?

?*?@param?content

?*存儲內容

?*?@param?imgPath

?*圖片路徑

?*/

public?void?encoderQRCode(String?content,?String?imgPath)?{

this.encoderQRCode(content,?imgPath,?"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?[??]"?+?"\nEMail?[?sjsky007@gmail.com?]";?

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!!!");?

}?

}

第二個代碼:

import?java.awt.image.BufferedImage;?

import?jp.sourceforge.qrcode.data.QRCodeImage;?

public?class?TwoDimensionCodeImage?implements?QRCodeImage?{?

BufferedImage?bufImg;?

public?TwoDimensionCodeImage(BufferedImage?bufImg)?{?

this.bufImg?=?bufImg;?

}?

@Override?

public?int?getHeight()?{?

return?bufImg.getHeight();?

}?

@Override?

public?int?getPixel(int?x,?int?y)?{?

return?bufImg.getRGB(x,?y);?

}?

@Override?

public?int?getWidth()?{?

return?bufImg.getWidth();?

}?

}

  • 上一篇:寵暴發戶還是愛權貴?這四款豪華純電動SUV壹定有妳的菜!
  • 下一篇:iPhone刷機錯誤的相關原因有哪些?
  • copyright 2024編程學習大全網