google的zxing二维码生成

二维码生成有很多sdk,但本人认为zxing包最好用,以下就是二维码生成的类

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;  

import org.apache.commons.lang3.StringUtils;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;  

/**
 * @ClassName: GenerateQRCode
 * @Description: 生成二维码
 * @author
 * @company
 * @date 2015-3-10
 * @version V1.0
 */
public final class QRCodeUtils {  

    private static final QRCodeUtils instance = new QRCodeUtils();  

    private QRCodeUtils() {
    }  

    public static QRCodeUtils getInstance() {
        return instance;
    }  

    private static final int BLACK = 0xff000000;
    private static final int WHITE = 0xFFFFFFFF;  

    private static final int WIDTH = 400;		//二维码宽
    private static final int HEIGHT = 400;		//二维码高

    private static final int totalWidth = 400;	//总宽
    private static final int totalHeight = 600;	//总高

    int fontHeight=20,lineHeight=20;			//字高,行高
    /**
     * @Title: generate
     * @Description: 生成二维码
     * @param assetsName
     *            二维码图片名称
     * @param params
     *            二维码信息
     * @param width
     *            生成的图片的宽
     * @param height
     *            生成的图片的高
     * @param path
     *            二维码图片存放目录
     * @throws Exception
     * @return String 二维码图片名称
     * @author
     * @date 2012-11-9
     */
    public String generate(String nick,String assetsName, String params, String path, String fileName) throws Exception {  

    	File file = new File(path);  

        if (!file.exists()) {
            file.mkdirs();
        }  

        //获取logo文件
        String head=path+"logo.png";

        // 二维码图片存放路径
        path = path.concat(fileName);
        file = new File(path);
        if (!file.exists()) {
            file.createNewFile();
        }  

        BitMatrix bitMatrix = new MultiFormatWriter().encode(params,
                BarcodeFormat.QR_CODE, WIDTH, HEIGHT);  

        //二维码的buffered
        BufferedImage bufImgCode = toBufferedImage(bitMatrix);

        //构造新图像
        BufferedImage bufImg = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_INT_RGB); // 图片的大小
        Graphics2D gs = bufImg.createGraphics();
        gs.setBackground(Color.WHITE);
        gs.clearRect(0, 0, totalWidth, totalHeight);
        gs.setColor(Color.BLACK);

        //把二维码buffered画到gs里面
        if(bufImgCode!=null)
        	gs.drawImage(bufImgCode, null, 0, 100);
        //head
        Image img = ImageIO.read(new File(head));
        //实例化一个Image对象。             
        gs.drawImage(img, 40, 30, null);
        if(StringUtils.isNotBlank(nick)){
        	gs.setFont(new Font("微软雅黑", Font.BOLD, 20));
            gs.drawString(nick,160, 80);
            gs.setFont(new Font("微软雅黑", Font.BOLD, 16));
            gs.drawString("为您推荐最热门的手机业务",160, 110);

        }

        //把文字写到二维码下面
        if (StringUtils.isNotBlank(assetsName)) {
            gs.setFont(new Font("微软雅黑", Font.BOLD, 20));
            gs.drawString("欢迎扫一扫二维码",50, 500);
            gs.drawString("办理"+assetsName,50, 540);
        }

        ImageIO.write(bufImg, "png", file);
        return fileName;
    }  

    public static void writeToFile(BitMatrix matrix, String format, File file)
            throws Exception {  

        BufferedImage image = toBufferedImage(matrix);  

        ImageIO.write(image, format, file);  

    }  

    public static BufferedImage toBufferedImage(BitMatrix 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) == true ? BLACK : WHITE);  

            }  

        }  

        return image;
    }  

    public static void main(String[] args) {
    	 String path = "E:\\";
         try {
        	 QRCodeUtils.getInstance().generate("XXX","移动流量数据包50元","www.baidu.com", path,"90006.png");
             System.out.println("生成二维码成功");  

         } catch (WriterException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
         }
	}
}  

时间: 2024-09-29 22:33:06

google的zxing二维码生成的相关文章

zxing二维码生成工具类

图片生成工具生成 1.支持多中形式的图片,二维码,条形码 2.支持一张图片多个二维码 3.支持二维码图片上加logo 4.支持图片头部底部添加文字描述 public class ZxingEncoderUtil { private static final String CHARSET = "utf-8"; private static final String FORMAT = "JPG"; private static Font font = null; /**

Android之zxing二维码生成与识别

二维码: 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的: 在代码编制上巧妙的利用构成计算机内部逻辑基础的0和1比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理: 二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息: 二维码相对于条形码的优势就是省空间:   zxing简介: zxing是一个开放源码的,用java实现的多种格式的1D/2D条码图像处

ZXing二维码生成在Unity3D中出错,数组超出界限的解决办法

错误截图: IndexOutOfRangeException: Array index is out of range.ZXing.Color32Renderer.Render (ZXing.Common.BitMatrix matrix, BarcodeFormat format, System.String content, ZXing.Common.EncodingOptions options)ZXing.BarcodeWriterGeneric`1[TOutput].Write (Sy

运行Google 官方zxing二维码扫描器

首先,要去下载Zxing的源码,由于Zxing 的服务内容比较广,我们先把所有的源码都下载下来,使用的时候根据需要加载. 或者从开源中国下载https://www.oschina.net/question/tag/zxing 下载好的zip 提取里面的文件之后是 我们需要的文件已经被标出来了,其中core文件需要打包成jar,但是由于Android studio 打包jar比较麻烦,所以我们可以直接从网上下载别人打包好的,但是需要注意版本 这里我们给出一个下载core jar 包的地址http:

聊聊 Web 项目二维码生成的最佳姿势

在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5天实现的逻辑是这样的: 客户 ajax 请求生成二维码,后端服务洞悉这一请求,生成二维码(可参照我博客:Google Zxing 二维码生成与解析). 并将二维码已用户 ID 进行命名存储在项目工程 /webcontent/qrcode/AAAAAAAAAAAAAA.png 当中. 使用用户 ID

二维码生成工厂

本次主要分享的是3个免费的二维码接口的对接代码和测试得出的注意点及区别,有更好处理方式多多交流,相互促进进步:最近在学习JavsScript的扩展TypeScript,感觉语法糖很甜,大部分与C#更为类似,可能都是微软项目的原因吧,有兴趣的朋友可以多多相互交流下: 以上是个人的看法,下面来正式分享今天的文章吧: . Google的Api二维码生成接口 . 2d-code的Api二维码生成接口 . topscan的Api二维码生成接口 . 使用面向对象+加载程序集创建对象合并以上接口封装成二维码生

zxing实现二维码生成和解析

zxing实现二维码生成和解析 博客分类: 二维码 zxing 二维码的生成与解析.有多种途径.我选择用大品牌,google老大的zxing. gitHub链接是(我用的3.0.0,已经是nio了) https://github.com/zxing/zxing/tree/zxing-3.0.0 Java代码   // 其中输出图像和读取图像的类在core包 MultiFormatReader MultiFormatWriter // 生成矩阵的类在javase的包里 MatrixToImageW

java zxing实现二维码生成和解析zxing实现二维码生成和解析

zxing实现二维码生成和解析 二维码 zxing 二维码的生成与解析.有多种途径.我选择用大品牌,google老大的zxing. gitHub链接是(我用的3.0.0,已经是nio了) https://github.com/zxing/zxing/tree/zxing-3.0.0 Java代码   // 其中输出图像和读取图像的类在core包 MultiFormatReader MultiFormatWriter // 生成矩阵的类在javase的包里 MatrixToImageWriter

ZXing 二维码解析生成工具类

原文:http://www.open-open.com/code/view/1455848023292 import com.google.zxing.*; import com.google.zxing.Reader; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.googl