import com.swetake.util.Qrcode;
import jp.sourceforge.qrcode.QRCodeDecoder;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
/**
* DateTime: 2016/9/20 13:21
* åè½ï¼äºç»´ç
* æè·¯ï¼
*/
public class TwoDimensionCode {
//æµè¯
public static void main(String[] args) throws Exception {
//çæäºç»´ç
encoderQRCode("http://www.yangenneng.cn/","D:\\Users\\yangenneng0\\Pictures\\æ¶è\\2.jpg");
//è§£æäºç»´ç
System.out.println(decoderQRCode("D:\\Users\\yangenneng0\\Pictures\\æ¶è\\2.jpg"));
}
/**
* çæäºç»´ç (QRCode)å¾ç
* @param content åå¨å
容
* @param imgPath å¾çè·¯å¾
*/
public static void encoderQRCode(String content,String imgPath){
encoderQRCode(content,imgPath,"png",2);
}
/**
* çæäºç»´ç (QRCode)å¾ç
* @param content åå¨å
容
* @param output è¾åºæµ
*/
public static void encoderQRCode(String content, OutputStream output){
encoderQRCode(content,output,"png",2);
}
/**
* çæäºç»´ç (QRCode)å¾ç
* @param content åå¨å
容
* @param imgPath å¾çè·¯å¾
* @param imgType å¾çç±»å
*/
public static void encoderQRCode(String content,String imgPath,String imgType){
encoderQRCode(content,imgPath,imgType,2);
}
/**
* çæäºç»´ç (QRCode)å¾ç
* @param content åå¨å
容
* @param out è¾åºæµ
* @param imgType å¾çç±»å
*/
public static void encoderQRCode(String content,OutputStream out,String imgType){
encoderQRCode(content,out,imgType,2);
}
/**
* çæäºç»´ç (QRCode)å¾ç
* @param content åå¨å
容
* @param imgPath å¾çè·¯å¾
* @param imgType å¾çç±»å
* @param size äºç»´ç 尺寸
*/
public static void encoderQRCode(String content,String imgPath,String imgType,int size){
try {
BufferedImage bufImg=qRCodeCommon(content,imgType,size);
File imgFile=new File(imgPath);
// çæäºç»´ç QRCodeå¾ç
ImageIO.write(bufImg,imgType,imgFile);
} catch ( IOException e ) {
e.printStackTrace();
}
}
public static void encoderQRCode(String content,OutputStream out,String imgType,int size){
try {
BufferedImage bufImg=qRCodeCommon(content,imgType,size);
//çæäºç»´ç QRCodeå¾ç
ImageIO.write(bufImg,imgType,out);
} catch ( IOException e ) {
e.printStackTrace();
}
}
/**
* çæäºç»´ç (QRCode)å¾ççå
Œ
±æ¹æ³
* @param content åå¨å
容
* @param imgType å¾çç±»å
* @param size å¾ç大å°
* @return
*/
private static BufferedImage qRCodeCommon(String content,String imgType,int size){
BufferedImage bugImg=null;
size=10;
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);
bugImg=new BufferedImage(imgSize,imgSize,BufferedImage.TYPE_INT_RGB);
Graphics2D gs=bugImg.createGraphics();
//è®¾ç½®èæ¯é¢è²
gs.setBackground(Color.WHITE);
gs.clearRect(0,0,imgSize,imgSize);
//设置å¾åé¢è² > BALCK
gs.setColor(Color.BLACK);
//设置åç§»éï¼ä¸è®¾ç½®å¯è½å¯¼è´è§£æé误
int pixoff=2;
//è¾åºå
容 > äºç»´ç
if(contentBytes.length > 0 && contentBytes.length < 800){
boolean[][] codeOut=qrcodeHandler.calQrcode(contentBytes);
for ( int i = 0; i