• java压缩base64位图


    前端调用接口的时候获取base64过大,响应变慢,这时候需要对base64进行压缩,提高渲染速度

    <!-- 图片压缩 -->
            <dependency>
                <groupId>net.coobird</groupId>
                <artifactId>thumbnailator</artifactId>
                <version>0.4.8</version>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    package com.ekkcole.controlle.压缩图片;
    
    import com.ekkcole.utils.UrlToBase64Util;
    import net.coobird.thumbnailator.Thumbnails;
    import org.springframework.stereotype.Service;
    import sun.misc.BASE64Decoder;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.InputStream;
    
    import org.apache.commons.codec.binary.Base64;
    
    import java.io.*;
    
    /*
       图片压缩
     */
    
    public class Imageys {
    
        public static void main(String[] args) {
            String s = "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
    
    摘自: https://imgtobase64.d777.com/";
    		System.out.println( resizeImageTo40K(s,"2"));
        }
    
        /**
         * 压缩base64编码至40K以内
         *
         * @param base64Img
         * @return
         */
        public static String resizeImageTo40K(String base64Img) {
            try {
                BASE64Decoder decoder = new BASE64Decoder();
                byte[] bytes1 = decoder.decodeBuffer(base64Img);
                InputStream stream = new ByteArrayInputStream(bytes1);
                BufferedImage src = ImageIO.read(stream);
                //BufferedImage output = Thumbnails.of(src).size(src.getWidth() / 3, src.getHeight() / 3).asBufferedImage();
                // 压缩的尺寸
                BufferedImage output = output=Thumbnails.of(src).size(120, 80).asBufferedImage();
                String base64 = imageToBase64(output);
                if (base64.length() - base64.length() / 8 * 2 > 40000) {
                    output = Thumbnails.of(output).scale(1 / (base64.length() / 40000)).asBufferedImage();
                    base64 = imageToBase64(output);
                }
                return base64;
            } catch (Exception e) {
                return base64Img;
            }
        }
    
        // BufferedImage转换成base64,在这里需要设置图片格式,如下是jpg格式图片:
        public static String imageToBase64(BufferedImage bufferedImage) {
            Base64 encoder = new Base64();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            try {
                ImageIO.write(bufferedImage, "png", baos);
            } catch (IOException e) {
            }
            return new String(encoder.encode((baos.toByteArray())));
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
  • 相关阅读:
    【产品经理方法论——产品的基本概念】
    基于javaEE通讯录名片夹管理系统
    CentOS7安装部署Kafka with KRaft
    第三章 内存管理 十二、请求分页管理方式
    电话机器人与电销系统完美融合,AXB回拨助力外呼升级
    使用Qt实现命令行解析
    ASP.NET Core使用filter和redis实现接口防重
    持安科技入选数说安全《2023中国网络安全市场年度报告》
    实验4 SQL的复杂多表查询以及视图
    SpringCloud实战教程 黑马商城企业级项目 服务注册和发现 OpenFeign
  • 原文地址:https://blog.csdn.net/weixin_45559862/article/details/128183829