MultipartFile是个图片,压缩它,并且返回 byte[]
时间: 2024-09-14 08:04:51 浏览: 31
SpringMVC中MultipartFile上传获取图片的宽度和高度详解
MultipartFile 是Spring MVC框架中用于处理文件上传的对象,通常用于处理HTTP请求中的二进制文件,包括图片。如果你想压缩上传的图片并将其转换成字节数组,你可以按照以下步骤操作:
1. 首先,你需要获取到 MultipartFile 对象,这通常是通过前端表单提交来的。
```java
@Autowired
private CommonsMultipartFile multipartFile;
// 获取图片文件
MultipartFile imageFile = multipartFile.getFile("imageFile");
```
2. 使用第三方库如Apache Commons IO或Java内置的Stream API来读取和压缩图片。这里我们以Apache Commons IO为例:
```java
import org.apache.commons.io.IOUtils;
import org.springframework.util.StreamUtils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.zip Deflater;
InputStream inputStream = imageFile.getInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 创建压缩流
Deflater deflater = new Deflater(6);
deflater.setInput(inputStream.readAllBytes());
deflater.finish();
byte[] compressedData = new byte[outputStream.size()];
deflater.copy(outputStream.toByteArray(), compressedData);
IOUtils.closeQuietly(inputStream); // 关闭输入流
// 返回压缩后的字节数组
return compressedData;
```
3. 这里,`Deflater` 类用于图片的压缩,设置压缩级别为6(0-9,数值越高压缩比越大,但处理速度会变慢)。最后将压缩后的数据存入 `ByteArrayOutputStream` 并转换为字节数组。
阅读全文