首先需要导入 QRCode.jar 包

下载地址看这里   http://pan.baidu.com/s/1o6qRFqM

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;

public class QrcodeUtil {
    public static void main(String[] args) {

//生成二维码
        String content = "http://user.qzone.qq.com/913240046";
        String imgPath = "F:\\test.png";
        String ccpath="F:\\center.png";
        createQRCode(content, imgPath,ccpath);

   String content2 = "http://user.qzone.qq.com/913240046";
        String imgPath2 = "F:\\test2.png";
        QrcodeImg(content2,imgPath2);   
        
 }

/**
     * @param content 内容
     * @param imgPath 生成二维码图片的地址
     * @param ccbPath 二维码中间图片
     * @return
     */
    public static int createQRCode(String content, String imgPath, String ccbPath) {  
            try {  
            Qrcode qrcodeHandler = new Qrcode();  
                //设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小  
                qrcodeHandler.setQrcodeErrorCorrect('Q');  
                //N代表数字,A代表字符a-Z,B代表其他字符
                qrcodeHandler.setQrcodeEncodeMode('B');
                // 设置设置二维码版本,取值范围1-40,值越大尺寸越大,可存储的信息越大  
                int size = 12;
                qrcodeHandler.setQrcodeVersion(size);                 
                int imgSize = 67 + 12 * (size - 1);
                
                byte[] contentBytes = content.getBytes("utf-8");  
                BufferedImage bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);  
                Graphics2D gs = bufImg.createGraphics();  
      
                gs.setBackground(Color.WHITE);  
                gs.clearRect(0, 0, imgSize, imgSize);  
      
                // 设定图像颜色 > BLACK  
               gs.setColor(Color.BLACK);
      
                // 设置偏移量 不设置可能导致解析出错  
                int pixoff = 2;  
                // 输出内容 > 二维码  
                if (contentBytes.length > 0 && contentBytes.length <800) {  
                    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,800]. ");  
                    return -1;
                }  
                Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。
                gs.drawImage(img, 75, 75, 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;
        }

/**
     * @param content 二维码中包含的内容
     * @param imgPath 二维码生成保存路劲
     */
    public static void QrcodeImg(String content,String imgPath){
        try {
            
            Qrcode qrcode = new Qrcode();
            qrcode.setQrcodeErrorCorrect('M');
            qrcode.setQrcodeEncodeMode('B');
            qrcode.setQrcodeVersion(7);
            
            int width = 140;
            int height = 140;
            
            BufferedImage bufImg = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
            Graphics2D gs = bufImg.createGraphics();
            gs.setBackground(Color.WHITE);
            gs.clearRect(0, 0, width, height);
            gs.setColor(Color.BLACK);
            
        
            byte[] contentBytes = content.getBytes("utf-8");
            int pixoff = 2;
            
            //长度限制
            if(contentBytes.length>0 && contentBytes.length<120){
                boolean[][] codeOut = qrcode.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.out.println("出错了");
            }
            gs.dispose();
            bufImg.flush();
            
            File imgFile = new File(imgPath);
            try {
                ImageIO.write(bufImg, "png", imgFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

}

//生成的二维码图片

JAVA生成二维码图片代码的更多相关文章

  1. java生成二维码图片

    1.POM文件引入 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core& ...

  2. JAVA根据URL生成二维码图片、根据路径生成二维码图片

    引入jar包 zxing-2.3.0.jar.IKAnalyzer2012_u6.jar 下载地址:https://yvioo.lanzous.com/b00nlbp6h                ...

  3. java 生成二维码、可带LOGO、可去白边

      1.准备工作 所需jar包: JDK 1.6: commons-codec-1.11.jar core-2.2.jar javase-2.2.jar JDK 1.7: commons-codec- ...

  4. java 生成二维码后叠加LOGO并转换成base64

      1.代码 见文末推荐 2.测试 测试1:生成base64码 public static void main(String[] args) throws Exception { String dat ...

  5. JAVA生成二维码并转化为二进制在页面展示

    引用jar包: zxing的core包,下载路径可参考:http://download.csdn.net/detail/sxg0205/9461106 java代码: 引用包: import java ...

  6. C# 利用QRCode生成二维码图片

    网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了 ...

  7. Node.js在指定的图片模板上生成二维码图片并附带底部文字说明

    在Node.js中,我们可以通过qr-image包直接在后台生成二维码图片,使用方法很简单: var qr = require('qr-image'); exports.createQRImage = ...

  8. java生成二维码扫码网页自动登录功能

    找了很多资料,七七八八都试了一遍,最终写出来了这个功能. 菜鸟一枚,此文只为做笔记. 简单的一个生成二维码,通过网页确认登录,实现二维码页面跳转到主页面. 有三个servlet: CodeServle ...

  9. 使用python调用zxing库生成二维码图片

    (1)     安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install pytho ...

随机推荐

  1. 传引用 C(转)

    转自:http://myturn.blog.hexun.com/15584978_d.html #include <iostream> using namespace std ; void ...

  2. spfa求最长路

    http://poj.org/problem?id=1932 spfa求最长路,判断dist[n] > 0,需要注意的是有正环存在,如果有环存在,那么就要判断这个环上的某一点是否能够到达n点,如 ...

  3. selenium实战-自动退百度云共享群

    必备知识 在官网上下好selenium-3.0.1-py2.py3-none-any.whl,然后进入下载文件所在的位置 pip install selenium-3.0.1-py2.py3-none ...

  4. 【File】递归删除文件夹中子级文件/夹,并删除文件夹

    今天有这样一个需求,需要删除某一个文件夹,但是文件夹中还有子级的文件 或者还可能会有文件夹在里面,所以就需要使用一个简单的递归才能将文件夹删除成功,包括文件夹中的子级文件/夹.!!! 其实很简单,就一 ...

  5. JMeter中的关联-正则表达式提取(2)

    JMeter获取正则表达式中的提取的所有关联值的解决方法: 需求如下: { : ", : "results": : [ : : { : : : "total_e ...

  6. HTML DOM学习之三

    1.创建新的HTML元素:appendChild(); 如需向HTML DOM添加元素,首先必须创建该元素,然后把它追加到已有的元素上: <div id="div1"> ...

  7. DelphiXE下的字符串变化

    字符串类型用于描述一个单独的书面的文字和符号. 一.字符类型 Delphi支持AnsiChar和WideChar两种基本的字符类型.AnsiChar类型变量使用单字节来表示一个字符,WideChar使 ...

  8. iOS Xcode个人常用插件

    1.AdjustFontSize 按command +/-进行字体大小调整 2.ATProperty @property专用,strong.assign.copy.weak IBOutlet 3.Ba ...

  9. HowTo:使用数据流读写消息

      本文主要演示使用TPL 数据流库从数据流块(dataflow block)读写消息. 提供了同步方法和异步方法. 主要使用BufferBlock,其既能作为message source,有能作为m ...

  10. Cgroups控制cpu,内存,io示例

    Cgroups是control groups的缩写,最初由Google工程师提出,后来编进linux内核. Cgroups是实现IaaS虚拟化(kvm.lxc等),PaaS容器沙箱(Docker等)的 ...