java对base64的图片进行压缩
目标:用java将图片的base64码压缩到40kb以下。
依赖
<!-- 压缩图片-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
压缩的方法:
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.*; /*
图片压缩
*/ @Service
public class Imageys { /**
* 压缩base64编码至40K以内
* @param base64Img
* @return
*/
public 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 = Thumbnails.of(src).size(50, 50).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, "jpg", baos);
} catch (IOException e) {
}
return new String(encoder.encode((baos.toByteArray())));
} }
调用方法和输出结果
//压缩图片
@Autowired
Imageys imageys;
String imageBase64 = "/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDA.........";//此处省略
System.out.println("old:"+imageBase64.length());
imageBase64 = imageys.resizeImageTo40K(imageBase64);
System.out.println("new:"+imageBase64.length());
//输出结果
old:328724
new:7974
推荐一个适合零基础学习SQL的网站:不用安装数据库,在线轻松学习SQL!
java对base64的图片进行压缩的更多相关文章
- java将base64解析图片保存到本地。
将base64解析图片保存到本地的两个方法 /** * base64转图片 * @param base64str base64码 * @param savePath 图片路径 * @return */ ...
- Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.o ...
- java后台对上传的图片进行压缩
java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API提供现 ...
- Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】
本文实例讲述了Java实现的上传并压缩图片功能.分享给大家供大家参考,具体如下: 先看效果: 原图:1.33M 处理后:27.4kb 关键代码: package codeGenerate.util; ...
- Android实现图片的压缩、旋转工具类
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matri ...
- 移动前端—H5实现图片先压缩再上传
在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上 ...
- 前端上传 base64 编码图片到七牛云存储
参考文档 如何上传base64编码图片到七牛云 调试过程 文档中分别有 java 和 html 的 demo,可以根据文档示例调试. 下面是我调试的过程,可以作为参考,特别注意的是,如果需要给文件起名 ...
- Base64编码图片存取与前台显示
需求:将Base64编码图片以BLOB类型存入数据库,需要时取出显示 后台: String base64str=new String(log.getRequest_imgdata());//log为实 ...
- Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示
Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示 在 开发中遇到应用c#及asp.net的在的webservice 保存图片并以xml文件形式现实出来 ...
- base64和图片互转
pom.xml添加 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <dependen ...
随机推荐
- git可视化管理工具有哪些?
在 Git 中,有许多可视化管理工具可供使用.以下是一些常见的 Git 可视化管理工具及其功能的详细介绍. GitHub Desktop: GitHub Desktop 是由 GitHub 官方推出的 ...
- Typora的安装与使用教程
一.安装 1.下载 下载地址:Typora 官方中文站 二.安装 1.无脑下一步即可. 三.使用教程 1.Typora系统设置 一般导出使用PDF文件比较好,性价比比较高. 2.其他设置 以下所有设置 ...
- viewPager2页面的切换
使用流程: 1.定义ViewPager 2.为ViewPager创建Adapter ViewPagerAdapter package com.example.viewpagerandfragm ...
- 1、GO语言入门-环境准备
1.Windows开发环境准备 (1)Golang编译器下载 golang中文网:https://studygolang.com/dl 或者:https://go.dev/dl/ (2)下载解压,找到 ...
- keystone和beaengine的编译
编译Keystone 根据github的文档编译不出来,所以还是用CMake项目转成Visual Studio的项目来编译 1.下载源码 https://github.com/keystone-eng ...
- 数字孪生结合GIS系统为物流行业带来的改变
随着全球物流业务不断扩张和发展,数字化转型成为当今物流行业的主要趋势.在这个数字化时代,数字孪生技术和地理信息系统(GIS)的结合,为物流行业带来了前所未有的机遇和挑战.这种融合将为物流企业提供更高效 ...
- 数字孪生为何通过融合GIS系统能够更好地助力智慧城市发展?
随着城市化进程的不断加速,智慧城市建设已成为许多城市发展的重要方向.在智慧城市中,数字孪生技术和GIS系统的融合,为城市发展带来了全新的可能性和机遇.数字孪生是一种将物理世界和数字世界相结合的技术,通 ...
- 断言可Cookie管理器
断言可以判断预期结果和实际结果是否一致 可以辅助判断脚本的运行结果是否正确 cookie管理器 记录用户的cookie信息 可以自动记录cookie,也可以使用用户自定义的cookie
- [CD随身听] 1984年~2005年索尼全系列Discman+CD_WALKMAN珍贵资料
文章转载自:家电论坛https://jdbbs.com(由网友xieminjie整理提供) https://jdbbs.com/forum.php?mod=viewthread&tid=295 ...
- 设置CentOS7使用代理服务器上网
用三种方法设置CentOS7使用代理服务器上网 https://zhangyujia.cn/?p=1206 https://www.cnblogs.com/a-du/p/8964048.html 一. ...