• java base64相关


    文件转Base64:

     public static String imgToBase64(InputStream inStream) {
            byte[] data = null;
            try {
                //available()获取长度
                data = new byte[inStream.available()];
                System.out.println(inStream.available());
                inStream.read(data);
                inStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            BASE64Encoder encoder = new BASE64Encoder();
            //"\s"去除空白符
            return encoder.encode(data).replaceAll("\s*", "");
        }

    网络请求获取图片:

    public static String getImgBase64(List<Marker> markers) {
            // 获取url
            String imgUrl = getBaiduUrlParameters(markers);
            System.out.println(imgUrl);
            // 发送请求
            InputStream is = null;
            URL url = null;
            try {
                url = new URL(imgUrl);
                HttpURLConnection conn = null;
                conn = (HttpURLConnection) url.openConnection();
                conn.setConnectTimeout(3000);
                conn.setRequestMethod("GET");
                if (conn.getResponseCode() == 200) {
                    is = conn.getInputStream();
                    String contentType = conn.getHeaderField("Content-Type");
    //判断返回值类型
    if (contentType.contains("image")) {
    //这里的直接获取的InputStream需要进一步处理
    return imgToBase64(new ByteArrayInputStream(readStream(is))); } } is.close(); } catch (IOException e) { e.printStackTrace(); } return null; }

    读取InputStream:

    public static byte[] readStream(InputStream inStream) throws IOException {
            ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = -1;
            while ((len = inStream.read(buffer)) != -1) {
                outSteam.write(buffer, 0, len);
            }
            outSteam.close();
            inStream.close();
            return outSteam.toByteArray();
        }

    前端css用法:

    #test {
      background: url(data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=) no-repeat center;
    }

    前端img标签:

    <img src="data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=">

    使用base64优点:

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

    缺点:

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

    总结:

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

  • 相关阅读:
    SimpleCursorAdapter的使用
    sizeof和strlen的区别和联系总结
    设计模式-工厂方法模式
    Python第四章-字典
    Python第四章-字典
    Python第三章-字符串
    Python第三章-字符串
    Python 第二章-列表和元组
    Python 第二章-列表和元组
    设计模式-简单工厂模式
  • 原文地址:https://www.cnblogs.com/GuoJunwen/p/9442952.html
Copyright © 2020-2023  润新知