1、创建二维码
public void CreatCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
String content="http://www.baidu.com";//内容
String fileName="filename";//文件名字
String encodeddata=content;
String name=fileName;
String FilePath = "C:\\CODE\\IMAGE\\" + name + ".PNG"; // 生成的图片位置
File f = new File(FilePath);
if(!f.exists()){
File dirname = new File("C:\\CODE\\IMAGE\\");
if (!dirname.isDirectory())
{ //目录不存在
dirname.mkdirs(); //创建目录
}
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(7);
byte[] d = encodeddata.getBytes("GBK");
BufferedImage bi = new BufferedImage(139, 139,BufferedImage.TYPE_INT_RGB);
// createGraphics
Graphics2D g = bi.createGraphics();
// set background
g.setBackground(Color.WHITE);
g.clearRect(0, 0, 139, 139);
g.setColor(Color.BLACK);
if (d.length > 0 && d.length < 123) {
boolean[][] b = qrcode.calQrcode(d);
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b.length; j++) {
if (b[j][i]) {
g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
}
}
}
}
g.dispose();
bi.flush();
ImageIO.write(bi, "png", f);
System.out.println(encodeddata+"****");
}
Download(request,response,URLEncoder.encode(URLEncoder.encode(fileName+".png","utf-8"),"utf-8"),URLEncoder.encode(URLEncoder.encode(FilePath,"utf-8"),"utf-8"));
}
二、下载二维码
public void Download(HttpServletRequest request, HttpServletResponse response,String fileName,String filePath){
try {
fileName=URLDecoder.
decode(URLDecoder.
decode(fileName,
"UTF-8"),
"UTF-8");
fileName =
new String(fileName.getBytes(),
"ISO-8859-1");
//response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(fileName+".png","UTF-8"));
response.setHeader(
"Content-disposition",
"attachment;filename="+ fileName);
}
catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
response.setContentType(
"application/vnd.ms-excel;charset=utf-8");
try{
filePath=URLDecoder.
decode(URLDecoder.
decode(filePath,
"UTF-8"),
"UTF-8");
FileInputStream fis =
new FileInputStream(filePath);
OutputStream oa = response.getOutputStream();
byte[] b =
new byte[
1024];
int i=
0;
while((i=fis.read(b))>
0)
{
oa.write(b,
0,i);
}
fis.close();
oa.flush();
oa.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
转载请注明原文地址: https://ju.6miu.com/read-668434.html