zxing二维码的生成和解码
转载:http://andilyliao.iteye.com/blog/1102546
适用于j2se的方法
例子:
package snippet;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.EncodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatWriter;import com.google.zxing.Reader;import com.google.zxing.ReaderException;import com.google.zxing.Result;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.common.HybridBinarizer; public class TestEnDeCode { /** * */ public TestEnDeCode() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { TestEnDeCode t=new TestEnDeCode(); t.encode(); t.decode(); } // 编码 public void encode() { try { String str = "小猪";// 二维码内容 String path = "hwy.png"; BitMatrix byteMatrix; Hashtable hints = new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); byteMatrix = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, 200, 200,hints); File file = new File(path); MatrixToImageWriter.writeToFile(byteMatrix, "png", file); } catch (Exception e) { e.printStackTrace(); } } // 解码 public void decode() { try { Reader reader = new MultiFormatReader(); String imgPath = "hwy.png"; File file = new File(imgPath); BufferedImage image; try { image = ImageIO.read(file); if (image == null) { System.out.println("Could not decode image"); } LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer( source)); Result result; Hashtable hints = new Hashtable(); hints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); result = new MultiFormatReader().decode(bitmap, hints); String resultStr = result.getText(); System.out.println(resultStr); } catch (IOException ioe) { System.out.println(ioe.toString()); } catch (ReaderException re) { System.out.println(re.toString()); } } catch (Exception ex) { } } }