package cn.efunbox.manage.base.util; 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; import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Hashtable; public class QRCodeUtil { /** * 根据内容,生成指定宽高、指定格式的二维码图片 * * @param url 内容 * @return 生成的二维码图片路径 * @throws Exception */ public static String generateQRCode(String url) throws IOException, WriterException { Hashtable hints = new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.MARGIN, 0); BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 360, 360, hints); BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(image, "png", os); byte b[] = os.toByteArray(); String QRCode = new BASE64Encoder().encode(b); return QRCode; } public static void main(String[] args) throws Exception { String s = QRCodeUtil.generateQRCode("http://www.baidu.com"); System.out.println(s); } }