带图片二维码生成

import com.swetake.util.Qrcode;

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

import javax.imageio.ImageIO;

/**
 * Created by Admin on 16-3-9.
 */
public class TestCode {
    public static void main(String[] args) {
        try {
            //创建一个qrcode句柄
            Qrcode qrcodeHandler = new Qrcode();
            //二维码图片的纠错等级L(7%),M(15%),Q(25%),H(30%);
           qrcodeHandler.setQrcodeErrorCorrect('M');
            //编码格式二进制
            qrcodeHandler.setQrcodeEncodeMode('B');
            //版本,从1——21x212——25x25,每个版本增加4各模块,最高不能超过40
           qrcodeHandler.setQrcodeVersion(7);
            String content = "测试二维码!!!";
            byte[] contentByte = content.getBytes("gbk");
            //获取二维数组
            boolean[][] codeOut=qrcodeHandler.calQrcode(contentByte);
           System.out.println(codeOut.length+"----------"+codeOut[0].length);
           int width = 139, height = 139;
            BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics2D = bufImg.createGraphics();
            graphics2D.setBackground(Color.WHITE);
           graphics2D.clearRect(0,0,width,height);
           graphics2D.setColor(Color.BLACK);
            int pos=2;
            for (int i=0;i<codeOut.length;i++){
                for (int j=0;j<codeOut.length;j++){
                    if (codeOut[i][j]){
                        graphics2D.fillRect(i*3+pos,j*3+pos,3,3);
                    }
                }
            }
            //实例化一个Image对象
            Image image=ImageIO.read(new File("e:/123/ic.png"));
            //画制到画板
            graphics2D.drawImage(image,45,45,49,49,null);
            //释放资源
            graphics2D.dispose();
            //清空缓存
            bufImg.flush();
            //输出文件
            File img=new File("e:/123/version.png");
           ImageIO.write(bufImg,"PNG",img);
            //关闭流

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

 * 依赖包Qrcode_swetake.jar
 * 生成的二维码图片的大小是会根据所压缩的信息内容而变化的,
 * 网上提供的例子是通过new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);
* 来创建图像对象的,默认的情况下图片的大小是139*139,这个大小是适合QrcodeVersion7的情况。 * 将图片的大小设置到300*300就可以很好的支持QrcodeVersion20的情况,并且可以正常的解码。 * QrcodeVersion的范围值是【0-40】, * 0的含义是表示压缩的信息量将会根据实际传入值确定, * 只有最高上限的控制,而且图片的大小将会根据信息量自动缩放。 * 1-40的范围值,则有固定的信息量上限,而且图片的大小会固定在一个大小上, * 不会根据信息量的多少而变化。图片的大小和QrcodeVersion的换算关系为(0除外): * 图片大小 = 67 + 12 * (QrcodeVersion- 1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值