业务:用户上传一张图片到文件站,需要返回原图url和缩略图url

处理思路:

  1. 因为上传图片方法返回url是单个上传,第一步先上传原图并返回url
  2. 处理缩略图并上传:拿到MultipartFile压缩成缩略图后存放到项目内指定文件夹
  3. 用项目内新生成的缩略图转换为MultipartFile发送给图片上传方法得到url
  4. 流程处理完后删除存放在项目内的缩略图
    public void imageMethod(MultipartFile file){

        //region/-------创建缩略图存放的文件夹-------/
//获得项目根目录
String path = System.getProperty("user.dir");
//定义新文件夹路径
String dirPath = path + File.separator + "imagecache";
//根据路径生成文件夹
File dir = new File(dirPath);
dir.mkdirs();
//endregion //定义缩略图的全路径
String fileSuffix = "image.jpg";
String contextPath = dirPath + File.separator + fileSuffix; //压缩图片
MultipartFile newFile = null;
try {
//自定义宽高压缩(压缩方法很多,可以根据需求更改)
Thumbnails.of(file.getInputStream()).forceSize(100, 100).toFile(contextPath); //压缩完成后将缩略图生成MultipartFile
FileItem fileItem = createFileItem(contextPath);
newFile = new CommonsMultipartFile(fileItem); } catch (IOException e) {
e.printStackTrace();
}
//endregion //上面的“newFile”就是缩略图转换后的MultipartFile,就可以拿来用了 //程序处理完后把生成的缩略图删除
File image = new File(contextPath);
if (image.exists()) {
image.delete();
} } /**
* 获取压缩后的图片,File 转为 MultipartFile
*
*/
public FileItem createFileItem(String contextPath) {
{
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "textField";
int num = contextPath.lastIndexOf(".");
String extFile = contextPath.substring(num);
FileItem item = factory.createItem(textFieldName, "text/plain", true,
"MyFileName" + extFile);
File newfile = new File(contextPath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(newfile);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192))
!= -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
}

Java使用 Thumbnails 压缩图片的更多相关文章

  1. java 上传图片 并压缩图片大小

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  2. java 上传图片 并压缩图片大小(转)

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  3. java上传图片并压缩图片大小

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  4. 使用Google Thumbnails 压缩图片

    背景说明:最近项目中需要用到一些图片文件的上传 ,但是有些图片很大,比如轮播图,大有的有几兆,这样加载一个首页都要很久,显然这样对用户体验是非常不友好的,对服务器资源将是一种浪费. 为了解决这个问题, ...

  5. SpringMvc 使用Thumbnails压缩图片

    ```java @PostMapping(value = "/upLoadFile") @ApiOperation(value = "上传文件") public ...

  6. java上传图片时压缩图片

    /** * 函数:调整图片尺寸或生成缩略图 v 1.1 * @param $Image 需要调整的图片(含路径) * @param $Dw 调整时最大宽度;缩略图时的绝对宽度 * @param $Dh ...

  7. Java压缩图片

    阅读目录 前言 压缩的要求 实现 优点 其他功能 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的 ...

  8. java实现上传图片并压缩图片大小功能

    缩略图压缩文件jar包 <!-- 图片缩略图 --> <dependency> <groupId>net.coobird</groupId> <a ...

  9. Java压缩图片的实现类

    package com.function; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; ...

随机推荐

  1. 初识JAVA(学习记录)

    Java 1.1Java简介 Java是一种跨平台的,面向对象的程序设计语言.无论是电脑还是手机,到处都运行着JAVA开发的应用程序:JAVA程序可以在任何计算机.操作系统以及支持JAVA的硬件设备上 ...

  2. 学习Echarts:(二)异步加载更新

    这部分比较简单,对图表的异步加载和更新,其实只是异步获取数据然后通过setOption传入数据和配置而已. $.get('data.json').done(function (data) { myCh ...

  3. Java实现DDD中UnitOfWork

    Java实现DDD中UnitOfWork 背景 Maintains a list of objects affected by a business transaction and coordinat ...

  4. linux常用命令---网络端口信息与进程管理

    进程管理 进程管理

  5. Maven、Gradle 配置国内镜像源

    Maven 全局配置 修改 Maven 默认的全局配置文件: 类 Unix 系统: Mac OS / Linux 默认在 ~/.m2/settings.xml Windows 系统:一般在 Maven ...

  6. ORCLE 列转行

    字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 wm_conc ...

  7. Jquery toggle

    toggle:切换显示 如 <script> $(document).ready(function(){ $("button").click(function(){ $ ...

  8. Python __str__(self)

    python 在打印一个实例化对象时,打印的是对象的地址,比如:<__main__.Workers object at 0x00000000255A9AC8> 而__str__(self) ...

  9. 【译】Welcome to C# 9.0

    C# 9.0正在形成,我想分享我们对添加到该语言下个版本的一些主要功能的看法.对于每个新版本的 C#,我们努力使常见的编码方案更加清晰和简单,C# 9.0 也不例外.这次的一个特别重点是支持数据形状的 ...

  10. Alpha冲刺 —— 5.2

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...