url转换成二维码_地址转化为二维码

前言

根据公司业务需求,需要将指定的url催缴二维码,于是有了以下总结,作为一个记录,以便以后可以用到哦!

一、将url直接生成二维码

package com.xiaojukeji.it.common.util;
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 javax.swing.filechooser.FileSystemView;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class QrCodeUtil { 

public static void mainString[] args) { 

String url = "http://www.baidu.com";
String path = FileSystemView.getFileSystemView).getHomeDirectory) + File.separator + "testQrcode";
String fileName = "temp.jpg";
createQrCodeurl, path, fileName);
}
public static void createQrCodeString url,String path,String fileName) { 

try { 

Map<EncodeHintType, String> hints = new HashMap<>);
hints.putEncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = new MultiFormatWriter).encodeurl, BarcodeFormat.QR_CODE, 400, 400, hints);
File file = new Filepath, fileName);
if file.exists) || file.getParentFile).exists) || file.getParentFile).mkdirs)) && file.createNewFile))) { 

writeToFilebitMatrix, "jpg", file);
System.out.println"二维码图片:" + file);
}
} catch Exception e) { 

e.printStackTrace);
}
}
static void writeToFileBitMatrix matrix, String format, File file) throws IOException { 

BufferedImage image = toBufferedImagematrix);
if !ImageIO.writeimage, format, file)) { 

throw new IOException"Could not write an image of format " + format + " to " + file);
}
}
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
private static BufferedImage toBufferedImageBitMatrix matrix) { 

int width = matrix.getWidth);
int height = matrix.getHeight);
BufferedImage image = new BufferedImagewidth, height, BufferedImage.TYPE_INT_RGB);
for int x = 0; x < width; x++) { 

for int y = 0; y < height; y++) { 

image.setRGBx, y, matrix.getx, y) ? BLACK : WHITE);
}
}
return image;
}
}

二、将url生成二维码并以base64返回

上面的方法只能够将url生成二维码,但是如果将此结果返回给前端的话,是无法直接展示的,因为前端需要接收一个base64的字符串,所以下面的方法诞生了

public static String methodsString str) { 

MultiFormatWriter multiFormatWriter = new MultiFormatWriter);
Map hints = new HashMap);
hints.putEncodeHintType.CHARACTER_SET, "UTF-8"); //设置字符集编码类型
hints.putEncodeHintType.MARGIN, 1); //设置白边
BitMatrix bitMatrix = null;
try { 

bitMatrix = multiFormatWriter.encodestr, BarcodeFormat.QR_CODE, 300, 300, hints);
BufferedImage image = toBufferedImagebitMatrix);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream);
//输出二维码图片流
try { 

ImageIO.writeimage, "png", outputStream);
return Base64.encodeBase64StringoutputStream.toByteArray));
} catch IOException e) { 

e.printStackTrace);
}
} catch WriterException e1) { 

e1.printStackTrace);
}
return null;
}
public static BufferedImage toBufferedImageBitMatrix matrix) { 

int width = matrix.getWidth);
int height = matrix.getHeight);
BufferedImage image = new BufferedImagewidth, height,
BufferedImage.TYPE_INT_RGB);
for int x = 0; x < width; x++) { 

for int y = 0; y < height; y++) { 

image.setRGBx, y, matrix.getx, y) ? 0xFF000000 : 0xFFFFFFFF);//0xFF000000黑;0xFFFFFFFF白
}
}
return image;
}
public static void mainString[] args) { 

String methods = methods"http://www.baidu.com"");
System.out.printlnmethods);
}

这样就大功告成啦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平