• java基于谷歌开发的zxing包开发的二维码生成工具


    不得不说,二维码的应用越来越广泛了。废话不多说了。。

    此处采用的jar不多,只用zxing包里面的core.jar包即可,

    源码文件:二维码jar

    源码链接: http://pan.baidu.com/s/1gdw5OI3 密码: texe

     

    实例:

    genQRCode(String content,String url),其中url绝对路径,就是这个类的调用方法,返回值二维码文件名,生成png格式(如需其他,自行更改),开头已经定义了图片大小为300*300
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Hashtable;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    public class MatrixToImageWriter {
        
       private static final int BLACK = 0xFF000000; 
       private static final int WHITE = 0xFFFFFFFF; 
       private static final int WIDTH = 300;
       private static final int HEIGHT = 300;
        
       private MatrixToImageWriter() {} 
        
          
       public static BufferedImage toBufferedImage(BitMatrix matrix) { 
         int width = matrix.getWidth(); 
         int height = matrix.getHeight(); 
         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
         for (int x = 0; x < width; x++) { 
           for (int y = 0; y < height; y++) { 
             image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); 
           } 
         } 
         return image; 
       } 
            
              
       public static void writeToFile(BitMatrix matrix, String format, File file)throws IOException { 
             BufferedImage image = toBufferedImage(matrix); 
             if (!ImageIO.write(image, format, file)) { 
               throw new IOException("Could not write an image of format " + format + " to " + file); 
             } 
        } 
            
              
       public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException { 
         BufferedImage image = toBufferedImage(matrix); 
         if (!ImageIO.write(image, format, stream)) { 
           throw new IOException("Could not write an image of format " + format); 
         } 
       } 
       
       //生成二维码图片content:内容 ,url:生成路径
       public static String genQRCode(String content,String url){
           
         //验证是否存在文件夹
            CreateDir.createDir(url);
           
           String filename = null;
         //二维码的图片格式 
           String format = "png"; 
           Hashtable hints = new Hashtable(); 
           //内容所使用编码 
           hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); 
           BitMatrix bitMatrix;
            try {
                bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
                
                //生成名字,如果有自己的特有规则,以下3行自行更改
                int s=(int)(Math.random()*10000);//整数类型
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");    
                filename = "file_" + sdf.format(new Date())+s +"." + format ;
                
                //生成二维码 
                File outputFile = new File(url+File.separator+filename); 
                MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile); 
            } catch (WriterException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } 
           return filename;
       }
       
    }
  • 相关阅读:
    关于<form>标签
    javaEE学习随笔
    类与接口
    java学习中的一些总结
    java 对象的创建
    jQuery选择器
    CSS学习随笔
    JDBC笔记 二
    Java EE笔记 (1) JDBC
    泛型笔记
  • 原文地址:https://www.cnblogs.com/codekey/p/4330234.html
Copyright © 2020-2023  润新知