1:生成二维码工具类(从其它地方找的,然后自己实践成功,原文找不到了)
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import javax.imageio.ImageIO;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.io.OutputStream;
import java.io.IOException;
import java.util.Hashtable;
import java.awt.image.BufferedImage;
/**
* 生成二维码
*/
public final class MatrixToImageWriter {
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
private static final int WIDTH = 167;
private static final int HEIGHT = 167;
private static String FORMAT = "gif";
private MatrixToImageWriter() {}
public static BufferedImage toBufferedImage(BitMatrix matrix) {
int width = matrix.getWidth();
int height = matrix.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
}
}
return image;
}
public static void writeToFile(String str,String format, File file)
throws Exception {
//二维码的图片格式
if(StringUtils.isNotEmpty(format)){
FORMAT = format;
}
Hashtable hints = new Hashtable();
//内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
BufferedImage image = toBufferedImage(bitMatrix);
if (!ImageIO.write(image, FORMAT, file)) {
throw new IOException("Could not write an image of format " + format + " to " + file);
}
}
public static void writeToStream(String str,String format,OutputStream stream)
throws Exception {
//二维码的图片格式
Hashtable hints = new Hashtable();
if(StringUtils.isNotEmpty(format)){
FORMAT = format;
}
//内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
BufferedImage image = toBufferedImage(bitMatrix);
if (!ImageIO.write(image, FORMAT, stream)) {
throw new IOException("Could not write an image of format " + format);
}
}
}
2:Controller处理
@RequestMapping("generatorQrcode")
public void generatorQrcode(String str,HttpServletResponse response){
try{
//生成二维码
OutputStream stream = response.getOutputStream();
String format = "gif";
MatrixToImageWriter.writeToStream(str,format,stream);
}catch(Exception e){
e.printStackTrace();
}
}
3:jsp页面使用
<img src="http://localhost:8080/qrcode/generatorQrcode.do?str=hello"/>
4:这样就可以直接显示二维码图片
5:使用到的jar包
http://download.youkuaiyun.com/detail/liuchao102/8518849