QRCodeUtil.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package cn.efunbox.base.util;
  2. import com.google.zxing.BarcodeFormat;
  3. import com.google.zxing.EncodeHintType;
  4. import com.google.zxing.MultiFormatWriter;
  5. import com.google.zxing.WriterException;
  6. import com.google.zxing.client.j2se.MatrixToImageWriter;
  7. import com.google.zxing.common.BitMatrix;
  8. import lombok.extern.log4j.Log4j;
  9. import sun.misc.BASE64Encoder;
  10. import javax.imageio.ImageIO;
  11. import java.awt.image.BufferedImage;
  12. import java.io.ByteArrayOutputStream;
  13. import java.io.IOException;
  14. import java.util.Hashtable;
  15. @Log4j
  16. public class QRCodeUtil {
  17. /**
  18. * 根据内容,生成指定宽高、指定格式的二维码图片
  19. *
  20. * @param url 内容
  21. * @return 生成的二维码图片路径
  22. * @throws Exception
  23. */
  24. public static String generateQRCode(String url) {
  25. Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
  26. hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
  27. hints.put(EncodeHintType.MARGIN, 0);
  28. BitMatrix bitMatrix = null;
  29. ByteArrayOutputStream os = new ByteArrayOutputStream();
  30. String QRCode="";
  31. try {
  32. bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 360, 360, hints);
  33. BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
  34. ImageIO.write(image, "png", os);
  35. byte b[] = os.toByteArray();
  36. QRCode = new BASE64Encoder().encode(b);
  37. } catch (WriterException e) {
  38. log.error("WriterException:{}",e);
  39. } catch (IOException e) {
  40. log.error("IOEXCEPITON:{}",e);
  41. }finally {
  42. try {
  43. os.close();
  44. } catch (IOException e) {
  45. log.error("IOEXCEPITON:{}",e);
  46. }
  47. }
  48. return QRCode;
  49. }
  50. }