package leo; 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; public class QRCodeEncoderHandler { // 入口主函数 public static void main(String[] args) { // 生成二维码图片的路径 String imgPath = "F:/new_example/QrcodeImage/3301.jpg";// 此路径要根据自己的图片所在的位置来定 String content = "hello 大大小小,welcome to QRCode!\n" + "myblog [http://blog.csdn.net/tfslovexizi]";// 将要转换成二维码的内容 QRCodeEncoderHandler handler = new QRCodeEncoderHandler(); handler.encodeQRCoder(content, imgPath);// 写一个方法来生成二维码图片 System.out.println("encode QRCode success!"); } private void encodeQRCoder(String content, String imgPath) { // TODO Auto-generated method stub Qrcode qrcodeHandler = new Qrcode();// 实例化一个Qrcode类;来自第三方jar包com.swetake.util.Qrcode; // 设置纠错级别:可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect(‘M‘); // 设置编码方式: N代表数字,A代表字符a-Z,B代表其他字符 qrcodeHandler.setQrcodeEncodeMode(‘B‘); // 设置二维码版本:取值范围1-40,值越大尺寸越大,可存储的信息越大 qrcodeHandler.setQrcodeVersion(7); System.out.println(content); try { byte[] contentBytes = content.getBytes("gb2312");// 将内容转换成byte // 设置二维码显示图片的宽和高 BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB); // 充当画笔的角色 Graphics2D gs = bufImg.createGraphics(); // 设置背景色 gs.setBackground(Color.WHITE); // 设置二维码显示的区域 , //注意一定要先设置背景色,然后再去清除所显示区域的内容,要不然二维码显示不出来 gs.clearRect(0, 0, 140, 140); // 设置图片颜色 gs.setColor(Color.BLACK); // 设置偏移量 不设置可能导致解析出错 int pixoff = 0; // 输出内容 二维码 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[i][j]) { gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3); } } } } else { System.out.println("QRCode content byte length " + contentBytes.length + " not in 120"); } gs.dispose(); bufImg.flush(); File file = new File(imgPath); ImageIO.write(bufImg, "jpg", file); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
要想生成一个自己的二维码,首先需要做一个准备工作,那就是去获取一个第三方的jar包,里面提供了二维码的生成方法;此jar包是Qrcode_swetake.jar;当然我是从网上下载的,并且将此jar包上传到了资源上,有需要的可以去下载。
二维码在我们的生活中越来越多的出现在各种场合,因此二维码对我们越来越重要。二维码相对于条形码来说,储存了更多的信息。
先看看我整理的一点源码吧 (不好意思,源码一不小心给弄到上面去了) 那就看一下生成的图片吧
原文:http://blog.csdn.net/tfslovexizi/article/details/20629693