首页 > 代码库 > windows8运行zxing源码 生成与解码二维码 详解(含注释与图解可直接运行)
windows8运行zxing源码 生成与解码二维码 详解(含注释与图解可直接运行)
1 下载zxing2.1
2 本代码配置环境:eclipse、java1.6、windows8、zxing2.1
3 解压后将文件夹里面core/src下面的com文件夹导入到eclipse工程(工程可以自己建,如QrCode)中,图示如下:
注意:在源码中需要修改其编码配置为UTF-8,否则后面解码后面的文件中中文会乱码,修改图示如下:
4 TestEnDeCode.java源代码
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | package test; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Hashtable; import java.util.Scanner; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; 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.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(); Scanner in = new Scanner(System.in); System.out.println( "编码内容:" ); String str = in.next(); // String str = "http://www.baidu.com"; String path = "D:/Qr_pics/test7.png" ; t.encode(str, path); t.decode(path); } /* * 编码: * 1 将内容转换成二维矩阵 * 2 将该二维矩阵转换成图片 * */ public void encode(String str, String path) { try { // String str = "http://www.baidu.com百度看看";// 二维码内容 // String path = "D:/Qr_pics/test7.png"; //二维码图片生成 路径及名称 BitMatrix byteMatrix; byteMatrix = new MultiFormatWriter().encode( new String(str.getBytes( "UTF-8" ), "UTF-8" ), BarcodeFormat.QR_CODE, 800 , 800 ); //将文字转换成二维矩阵,并设置矩阵大小,这里的矩阵大小就是后面生成的图片像素大小 File file = new File(path); //新建矩阵文件 MatrixToImageWriter.writeToFile(byteMatrix, "gif" , file); //将矩阵文件转换成图片文件 } catch (Exception e) { e.printStackTrace(); } } /* * 解码: * 1 将图片反解码为二维矩阵 * 2 将该二维矩阵解码为内容 * */ public void decode(String imgPath) { try { Reader reader = new MultiFormatReader(); // String imgPath = "D:/Qr_pics/test7.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( "\n解码结果:\n" +resultStr); } catch (IOException ioe) { System.out.println(ioe.toString()); } catch (ReaderException re) { System.out.println(re.toString()); } } catch (Exception ex) { System.out.println(ex.toString()); } } } |
5 运行结果:
windows8运行zxing源码 生成与解码二维码 详解(含注释与图解可直接运行)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。