首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

QRCode 兑现 二维码 加密解密

2012-09-11 
QRCode 实现 二维码 加密解密Encoderimport java.awt.Colorimport java.awt.Graphics2Dimport java.awt.

QRCode 实现 二维码 加密解密
Encoder

import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.nio.charset.Charset;import javax.imageio.ImageIO;import com.swetake.util.Qrcode;public class Encoder{private Qrcode qrCode;public Encoder(){init();}private void init(){qrCode = new Qrcode();qrCode.setQrcodeErrorCorrect('M');qrCode.setQrcodeEncodeMode('B');qrCode.setQrcodeVersion(7);}private Graphics2D createGraphics(BufferedImage bi){Graphics2D g = bi.createGraphics();g.setBackground(Color.WHITE);g.clearRect(0, 0, 139, 139);g.setColor(Color.BLACK);return g;}private void drawImage(Graphics2D g, byte[] d){if(d.length > 0 && d.length < 123){boolean[][] b = qrCode.calQrcode(d);for(int i = 0; i< b.length; i++){for(int j = 0; j< b.length; j++){if(b[j][i]){g.fillRect(j*3 + 2, i*3 +2 , 3, 3);}}}}}private void saveImage(BufferedImage bi, String fileName){File f = new File(fileName);try{ImageIO.write(bi, "jpg", f);}catch (IOException e){// TODO Auto-generated catch blocke.printStackTrace();}}public void convertText2Image(String text, String fileName){if(null == text){return;}byte[] d = text.getBytes(Charset.defaultCharset());BufferedImage bi = new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);Graphics2D g = createGraphics(bi);drawImage(g, d);g.dispose();bi.flush();saveImage(bi, fileName);} }


Decoder
import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.nio.charset.Charset;import javax.imageio.ImageIO;import jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.data.QRCodeImage;import jp.sourceforge.qrcode.exception.DecodingFailedException;public class Decoder{private QRCodeDecoder decoder;public Decoder(){init();}private void init(){decoder = new QRCodeDecoder();}public String convertImage2String(String fileName){String decodedData = null;File imageFile = new File(fileName);                   BufferedImage image = null;                      try {               image = ImageIO.read(imageFile);           } catch (IOException e) {               System.out.println("Error: "+ e.getMessage());           }           try {                              decodedData = new String(decoder.decode(new J2SEImage(image)),Charset.defaultCharset());                          } catch (DecodingFailedException dfe) {               System.out.println("Error: " + dfe.getMessage());           }   return decodedData;} }       class J2SEImage implements QRCodeImage {       BufferedImage image;              public J2SEImage(BufferedImage image) {           this.image = image;       }              public int getWidth() {           return image.getWidth();       }              public int getHeight() {           return image.getHeight();       }              public int getPixel(int x, int y) {           return image.getRGB(x, y);       }   }


Test
import com.huawei.demo.decode.Decoder;import com.huawei.demo.encode.Encoder;public class Test{public static void main(String[] args){String fileName = "C:\\text.jpg";Encoder encoder = new Encoder();encoder.convertText2Image("I love you", fileName);Decoder decoder = new Decoder();String text = decoder.convertImage2String(fileName);System.out.println(text);}}

热点排行