最近,看到好多人在做生成二維碼的功能,感覺很高大上,就想着自己也整一套二維碼製作的代碼。之前幾個月就寫好了,只是沒有時間發表。前幾個月很懶,博文也是斷斷續續的寫,感覺這樣很不好,所以,決定接下來要好好寫。
package com.zsl.code;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import com.swetake.util.Qrcode;
/**
* 〈二維碼製作〉
* @author ZSL
* @version V1.00 2015-5-13[版本號, YYYY-MM-DD]
* @see [相關類/方法]
* @since TP V1.0R001 [產品/模塊版本]
*/
public class Code
{
/**
*〈生成二維碼〉
* @param args void
* @throws IOException
*/
public static void createCode()
throws IOException
{
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(7);
int width = 140, height = 140;
BufferedImage bufImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D grap = bufImage.createGraphics();
//String content="http://user.qzone.qq.com/1064396300/main";
String content = "龍哥:我的理想是什麼?我的目標是什麼?我的錢途又在哪裏?";
byte[] contentByte = content.getBytes("utf-8");
grap.setBackground(Color.WHITE);
grap.clearRect(0, 0, width, height);
grap.setColor(Color.BLACK);
boolean[][] codeOut = qrcode.calQrcode(contentByte);
for (int i = 0; i < codeOut.length; i++ )
{
for (int j = 0; j < codeOut.length; j++ )
{
if (codeOut[j][i])
{
grap.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
}
}
}
File img = new File("E:\\code.png");
if ( !img.exists())
{
img.mkdir();
}
else
{
img.delete();
}
grap.dispose();
ImageIO.write(bufImage, "png", img);
JOptionPane.showMessageDialog(null, "二維碼生成成功!");
}
public static void main(String[] args)
throws IOException
{
createCode();
}
}
二維碼已經生成成功,唯一的缺點就是中間不帶logo圖片。
後期一定會改進的。
下面附上源碼一份:java實現二維碼製作源碼