zoukankan      html  css  js  c++  java
  • 二维码的生成和读取


    相应信息

    
    <!--这个是利用maven来进行构建的  首先引入依赖-->
     <!-- google 生成二维码  -->
            <dependency>
    		    <groupId>com.google.zxing</groupId>
    		    <artifactId>core</artifactId>
    		    <version>2.0</version>
    		</dependency>
    //下面是具体的代码实现import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.common.BitMatrix;
    
    public final class MartixToImageWriter {
    
            //私有不可更改的变量:生成二维码图片的颜色
            private static final int BLACK = 0xFF000000;
            private static final int WHITE = 0xFFFFFFFF;
            //空的构造方法
            public MartixToImageWriter() {
                    // TODO Auto-generated constructor stub
            }
            /**
             * 静态方法
             * BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,
             * 通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。
             * @param matrix 编码形式
             * @return
             */
            public static BufferedImage toBufferedImage(BitMatrix matrix)
            {
                    //图片的宽度和高度
                    int width = matrix.getWidth();
                    int height = matrix.getHeight();
                    //BufferedImage.TYPE_INT_RGB将图片变为什么颜色
                    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;
            }
            /**
             * 静态方法 用于生成图片
             * @param matrix 编码形式
             * @param format 图片类型
             * @param file 文件(图片路径,图片名称)
             * @throws IOException
             */
            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);
                    }
            }
            /**
             * 输出
             * @param matrix
             * @param format
             * @param stream
             * @throws IOException
             */
            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);
                    }
            }
    }//二维码生成
    public class ImageTest(){
        public static void main(String[] args){
            //二维码中保存的信息
            String content = "这是一个二维码生成图片的测试";
            //生成的二维码保存的路径
            String path = "E:\test";
            MultiFormatWriter multiFormatWrite = new MultiFormatWriter();
            Map hints = new HashMap();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            // 按照指定的宽度,高度和附加参数对字符串进行编码
            //生成二维码
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            BitMatrix bitMatrix = multiFormatWrite.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);
            File file1 = new File(path,sdf.format(new Date())+".jpg");
            // 写入文件
            MartixToImageWriter.writeToFile(bitMatrix, "jpg", file1);
            System.out.println("二维码图片生成成功!");
        }}
    
    
  • 相关阅读:
    百练 2712 细菌繁殖 解题报告
    Elasticsearch常用最全最常用工具清单
    并发工具类使用详解及区别(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
    Elasticsearch 启动过程详解
    Elasticsearch 编译调试总结
    gradle镜像源配置
    Activiti6详细教程
    CSDN-markdown编辑器语法
    Spring Boot Activiti 整合工作流引擎开发
    less使用语法详解
  • 原文地址:https://www.cnblogs.com/datiangou/p/10222355.html
Copyright © 2011-2022 走看看