DownloadWXCodeUtil.java 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.iamberry.wechat.utils;
  2. import javax.imageio.ImageIO;
  3. import java.awt.*;
  4. import java.awt.geom.Ellipse2D;
  5. import java.awt.image.BufferedImage;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.net.URL;
  10. import java.net.URLConnection;
  11. public class DownloadWXCodeUtil {
  12. /**
  13. * 下载微信二维码
  14. * @param urlString
  15. * @param filename 存储名称
  16. * @param savePath 路径
  17. * @param width 宽度
  18. * @param height 高度
  19. * @throws Exception
  20. */
  21. public static void download(String urlString, String filename,String savePath,int width,int height) throws Exception {
  22. // 输出的文件流
  23. File sf=new File(savePath);
  24. if(!sf.exists()){
  25. sf.mkdirs();
  26. }
  27. // 构造URL
  28. URL url = new URL(urlString);
  29. // 打开连接
  30. URLConnection con = url.openConnection();
  31. //设置请求超时为5s
  32. con.setConnectTimeout(5*1000);
  33. // 输入流
  34. InputStream is = con.getInputStream();
  35. BufferedImage bi = ImageIO.read(is);
  36. ImageIO.write(bi, "png", new File(savePath+filename));
  37. // JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(is);
  38. // BufferedImage image = decoderFile.decodeAsBufferedImage();
  39. // Image srcImg = image;
  40. // image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  41. // image.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
  42. // ImageIO.write(image, "JPEG", new File(savePath+filename));
  43. is.close();
  44. }
  45. /**
  46. * 下载微信二维码
  47. * @param url
  48. * @param filename
  49. * @param savePath
  50. * @param width
  51. * @param height
  52. */
  53. public static void downloadByNIO2(String url, String filename,String savePath,int width,int height,boolean isCircular) {
  54. try (InputStream ins = new URL(url).openStream()) {
  55. // JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(ins);
  56. // BufferedImage image = decoderFile.decodeAsBufferedImage();
  57. // Image srcImg = image;
  58. // image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  59. // image.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
  60. // ImageIO.write(image, "JPEG", new File(savePath+filename));
  61. // ins.close();
  62. BufferedImage bi = ImageIO.read(ins);
  63. if(isCircular){
  64. int w = width;
  65. int h = height;
  66. BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
  67. Graphics2D g2 = output.createGraphics();
  68. output = g2.getDeviceConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT);
  69. g2.dispose();
  70. g2 = output.createGraphics();
  71. g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  72. g2.fillRoundRect(0, 0,w, h, 720, 720);
  73. g2.setComposite(AlphaComposite.SrcIn);
  74. g2.drawImage(bi, 0, 0, w, h, null);
  75. g2.dispose();
  76. ImageIO.write(output, "png", new File(savePath+filename));
  77. }else{
  78. Image srcImg = bi;
  79. bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  80. bi.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
  81. ImageIO.write(bi, "png", new File(savePath+filename));
  82. }
  83. ins.close();
  84. } catch (IOException e) {
  85. e.printStackTrace();
  86. }
  87. }
  88. }