二维码的生成

此生成二维码的类我用的是QRCode的包

下载地址:http://www.400gb.com/file/80134276

 

 

import java.awt.Color;

import java.awt.Graphics2D;

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;

 

publicclass TwoQrcode {

   publicvoid CreateQrcode(String content, String path)//二维码储存的内容,二维码以什么形式输出

         throws UnsupportedEncodingException {

//1.首先我在这里生成二维码选的一种方法是用Qrcode这个类

      Qrcode qrCode = new Qrcode();// 注意是com.swetake.util.Qrcode;

//对二维码的一些设置

      qrCode.setQrcodeErrorCorrect('M');// 设置纠错能力,纠错能力越高,二维码可以储存的信息就越少

      qrCode.setQrcodeEncodeMode('B');// 设置编码为二进制

      qrCode.setQrcodeVersion(7);// 设置版本

   //2.对要储存在二维码里的信息进行处理

// 字符编码的转换

      if (content.isEmpty()) {

         System.out.println("传入值为空");

         return;

      }

//字符编码的转换是为了我们在扫描时不要出现乱码。如果项目本身就设置了是UTF-8,则此处IOS-8859-1改成UTF-8即可。

byte[] bt = new String(content.getBytes("ISO-8859-1"), "UTF-8").getBytes();// 有异常,抛出

      // 3.创建图像数据的缓冲区.具有8RGB颜色的分辨图像

      BufferedImage image = new BufferedImage(140, 140,

            BufferedImage.TYPE_INT_RGB);

      // 创建画笔工具

      Graphics2D g2D = (Graphics2D) image.getGraphics();

      g2D.setBackground(Color.WHITE);// 设置背景色为白色

      g2D.clearRect(0, 0, 140, 140);// 绘制矩形Rect

      g2D.setColor(Color.BLACK);// 前景色为黑色

      if (bt.length > 0) {// 这个方法传的值不为空时

         boolean[][] s = qrCode.calQrcode(bt);

         for (int i = 0; i < s.length; i++) {

            for (int j = 0; j < s.length; j++) {

                if (s[j][i]) {// 为真时就画,即前景色的黑点

                   g2D.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);

                }

            }

         }

 

      }

      g2D.dispose();// 画笔释放

      image.flush();// 将残留的数据推出缓冲区

      try {

         ImageIO.write(image, "jpg", new File(path));//以文件的方式输出

         // ImageIO.write(image, "jpg", outputStream);//以流的形式将image二维码图像输出

      } catch (IOException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值