用zxing生成、解析二维码
发布时间:2020-12-15 00:28:22 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Hashtable;import javax.imageio.ImageIO;i
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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.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.common.ByteMatrix; import com.google.zxing.common.HybridBinarizer; public class Test { private static final int BLACK = 0xff000000; private static final int WHITE = 0xFFFFFFFF; /** * @param args */ public static void main(String[] args) { Test test=new Test(); test.encode(); test.decode(); } //------------------------------------------------------------------------------编码------------------------------------------------- /** * 在编码时需要将com.google.zxing.qrcode.encoder.Encoder.java中的 * static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";修改为UTF-8,否则中文编译后解析不了 */ public void encode(){ try { String str = "姓名:张三,性别:男,年龄:25,籍贯:中国北京,";// 二维码内容 String path = "D://test.png"; ByteMatrix byteMatrix; byteMatrix= new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE,200,200); File file = new File(path); writeToFile(byteMatrix,"png",file); } catch (Exception e) { e.printStackTrace(); } } public static void writeToFile(ByteMatrix matrix,String format,File file) throws IOException { BufferedImage image = toBufferedImage(matrix); ImageIO.write(image,format,file); } public static BufferedImage toBufferedImage(ByteMatrix matrix) { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x,y,matrix.get(x,y) == 0 ? BLACK:WHITE); } } return image; } //-------------------------------------------------------------------解码---------------------------------------------------- public void decode(){ try{ Reader reader = new MultiFormatReader(); String imgPath = "D://test.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"); //解码设置编码方式为: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){ System.out.println(ex.toString()); } } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |