1. public static String imgToBase64(InputStream inStream) {
  2. byte[] data = null;
  3. try {
  4. //available()获取长度
  5. data = new byte[inStream.available()];
  6. System.out.println(inStream.available());
  7. inStream.read(data);
  8. inStream.close();
  9. } catch (IOException e) {
  10. e.printStackTrace();
  11. }
  12. BASE64Encoder encoder = new BASE64Encoder();
  13. //"\\s"去除空白符
  14. return encoder.encode(data).replaceAll("\\s*", "");
  15. }
  1. public static String getImgBase64(List<Marker> markers) {
  2. // 获取url
  3. String imgUrl = getBaiduUrlParameters(markers);
  4. System.out.println(imgUrl);
  5. // 发送请求
  6. InputStream is = null;
  7. URL url = null;
  8. try {
  9. url = new URL(imgUrl);
  10. HttpURLConnection conn = null;
  11. conn = (HttpURLConnection) url.openConnection();
  12. conn.setConnectTimeout(3000);
  13. conn.setRequestMethod("GET");
  14. if (conn.getResponseCode() == 200) {
  15. is = conn.getInputStream();
  16. String contentType = conn.getHeaderField("Content-Type");
    //判断返回值类型
  17. if (contentType.contains("image")) {
    //这里的直接获取的InputStream需要进一步处理
  18. return imgToBase64(new ByteArrayInputStream(readStream(is)));
  19. }
  20. }
  21. is.close();
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. }
  25. return null;
  26. }
  1. public static byte[] readStream(InputStream inStream) throws IOException {
  2. ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
  3. byte[] buffer = new byte[1024];
  4. int len = -1;
  5. while ((len = inStream.read(buffer)) != -1) {
  6. outSteam.write(buffer, 0, len);
  7. }
  8. outSteam.close();
  9. inStream.close();
  10. return outSteam.toByteArray();
  11. }
  1. #test {
  2. background: url(data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=) no-repeat center;
  3. }
  1. <img src="data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=">

减少前端图片网络请求次数,便于传输

不便于修改,影响代码阅读,转成的base64字符串比原始图片体积更大,所以大图片转成base64后反而请求更慢

在图标之类不常修改,且图片较小时使用base64可以优化网页速度

版权声明:本文为GuoJunwen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/GuoJunwen/p/9442952.html