java 中用 Thumbnails 缩放MultipartFile 到1M
时间: 2023-11-07 22:55:21 浏览: 140
在Java中使用Thumbnails库可以很方便地缩放MultipartFile对象。以下是一个示例代码:
```java
import net.coobird.thumbnailator.Thumbnails;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ImageUtils {
public static byte[] resizeTo1M(MultipartFile file) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Thumbnails.of(file.getInputStream())
.size(1024, 1024)
.outputQuality(0.8)
.toOutputStream(outputStream);
while (outputStream.size() > 1024 * 1024) {
outputStream.reset();
Thumbnails.of(file.getInputStream())
.size((int) (0.8 * file.getSize()), (int) (0.8 * file.getSize()))
.outputQuality(0.8)
.toOutputStream(outputStream);
}
return outputStream.toByteArray();
}
}
```
这段代码使用Thumbnails库将MultipartFile对象缩放到1M以内。代码首先创建一个`ByteArrayOutputStream`对象作为输出流,然后使用Thumbnails库对输入流进行缩放操作,并将结果输出到输出流中。然后通过检查输出流的大小,如果大小超过1M,则将缩放的尺寸再次减小为原来的80%并重试,直到输出流的大小满足要求。
阅读全文