JAVA二维码生成

来源:互联网 发布:win7无网络装网卡驱动 编辑:程序博客网 时间:2024/05/20 01:44

JAVA二维码生成

功能:可以生成带有Logo的二维码图片,采用第三方JAR包,QRCode.jar,并没有使用google的zxing。主要是我们的环境是jdk1.5的,我网上找不到1.5编译出来的zxing的jar包,好郁闷。

啥也不说,直接上源码,直接可用。

import com.swetake.util.Qrcode;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.OutputStream;/** * Created by netvempive on 2015-04-20. */public class QRCode {    /**     * 生成二维码(QRCode)图片,直接在指定路径下生成图片     * @param content 二维码图片的内容     * @param imgPath 生成二维码图片完整的路径     * @param ccbpath  二维码图片中间的logo路径     */    public static int createQRCode(String content, String imgPath,String ccbPath) {        try {            Qrcode qrcodeHandler = new Qrcode();            qrcodeHandler.setQrcodeErrorCorrect('M');            qrcodeHandler.setQrcodeEncodeMode('B');            qrcodeHandler.setQrcodeVersion(7);            // System.out.println(content);            byte[] contentBytes = content.getBytes("gb2312");            //构造一个BufferedImage对象 设置宽、高            BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);            Graphics2D gs = bufImg.createGraphics();            gs.setBackground(Color.WHITE);            gs.clearRect(0, 0, 140, 140);            // 设定图像颜色 > BLACK            gs.setColor(Color.BLACK);            // 设置偏移量 不设置可能导致解析出错            int pixoff = 2;            // 输出内容 > 二维码            if (contentBytes.length > 0 && contentBytes.length < 120) {                boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);                for (int i = 0; i < codeOut.length; i++) {                    for (int j = 0; j < codeOut.length; j++) {                        if (codeOut[j][i]) {                            gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);                        }                    }                }            } else {                System.err.println("QRCode content bytes length = "                        + contentBytes.length + " not in [ 0,120 ]. ");                return -1;            }            Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。            gs.drawImage(img, 55, 55, 30, 30, null);            gs.dispose();            bufImg.flush();            // 生成二维码QRCode图片            File imgFile = new File(imgPath);            ImageIO.write(bufImg, "png", imgFile);        }catch (Exception e){            e.printStackTrace();            return -100;        }        return 0;    }    /**     * 生成二维码(QRCode)图片,以流的方式输出二维码图片     * @param content 二维码图片的内容     * @param output生成二维码图片完整的路径     */    public static int createQRCode(String content, OutputStream output) {        try {            String ccbPath = QRCode.class.getClassLoader().getResource("/com/common/utils/logo.jpg").toURI().getPath();            Qrcode qrcodeHandler = new Qrcode();            qrcodeHandler.setQrcodeErrorCorrect('M');            qrcodeHandler.setQrcodeEncodeMode('B');            qrcodeHandler.setQrcodeVersion(7);            // System.out.println(content);            byte[] contentBytes = content.getBytes("gb2312");            //构造一个BufferedImage对象 设置宽、高            BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);            Graphics2D gs = bufImg.createGraphics();            gs.setBackground(Color.WHITE);            gs.clearRect(0, 0, 140, 140);            // 设定图像颜色 > BLACK            gs.setColor(Color.BLACK);            // 设置偏移量 不设置可能导致解析出错            int pixoff = 2;            // 输出内容 > 二维码            if (contentBytes.length > 0 && contentBytes.length < 120) {                boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);                for (int i = 0; i < codeOut.length; i++) {                    for (int j = 0; j < codeOut.length; j++) {                        if (codeOut[j][i]) {                            gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);                        }                    }                }            } else {                System.err.println("QRCode content bytes length = "                        + contentBytes.length + " not in [ 0,120 ]. ");                return -1;            }            Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。            gs.drawImage(img, 55, 55, 30, 30, null);            gs.dispose();            bufImg.flush();            // 生成二维码QRCode图片            /*File imgFile = new File(imgPath);            ImageIO.write(bufImg, "png", imgFile);*/            ImageIO.write(bufImg, "png", output);        }catch (Exception e){            e.printStackTrace();            return -100;        }        return 0;    }    public static void main(String[] args) {        createQRCode("1234","e:/1.jpg","e:/test.jpg");    }}
0 0