import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
public class QrcodeUtils {
public static HttpServletResponse getFile(HttpServletRequest request, HttpServletResponse response, String url, String fileName, int width, int high) {
try {
//生成二维码
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, high, hints);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
//二维码图片转化成字节数组
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(image, "png", out);
byte[] b = out.toByteArray();
InputStream fis = new ByteArrayInputStream(b);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
// 设置response的Header
fileName += ".png";
response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"),"ISO-8859-1"));
response.addHeader("Content-Length", "" + b.length);
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return response;
}
}
Controller层:
@Controller("/test")
public class UnitTestController {
@RequestMapping("/test6")
@ResponseBody
public void test6(HttpServletResponse response, HttpServletRequest request ) {
QrcodeUtils.getFile(request, response, "http://yujiejie.com", "ss", 1180, 1181);
}
}
二维码图片实现在浏览器点击下载,浏览器输入”localhost:8080/test/test6”则下载图片。
二维码图片实现在浏览器直接输出
在html文件中加入以下代码:
<img src="localhost:8080/test/test6" />
则会显示图片