java上传图片 压缩,java实现后台上传压缩图片 多几个案例
时间: 2024-12-11 22:31:59 浏览: 7
在Java中,上传并压缩图片通常涉及到两个步骤:首先,用户从前端选择图片并通过HTTP请求发送到服务器;然后,服务器端接收到文件后进行处理,包括读取、压缩和存储。以下是简要的步骤以及一些示例代码:
1. 图片上传:
使用Spring MVC或者Servlet API接收HTTP POST请求,例如:
```java
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 检查文件是否为空
if (file.isEmpty()) {
return "error";
}
try {
// 将上传的文件保存到临时目录
byte[] bytes = file.getBytes();
// ...进一步操作,比如保存到数据库或文件系统
} catch (IOException e) {
e.printStackTrace();
}
// 返回响应或其他操作
return "success";
}
```
2. 图片压缩:
可以利用Apache Commons Imaging库对图片进行压缩。以下是一个简单的压缩例子:
```java
import org.apache.commons.imaging.ImageIO;
import org.apache.commons.imaging.common.IoUtils;
import org.apache.commons.imaging.formats.jpeg.JpegImageWriteParam;
public BufferedImage compressImage(BufferedImage original) throws IOException {
JpegImageWriteParam param = new JpegImageWriteParam(null);
param.setCompressionQuality(0.8); // 设置压缩质量(范围0-1)
File tempFile = File.createTempFile("compressed-", ".jpg");
ImageIO.write(original, "JPEG", tempFile, param);
return ImageIO.read(tempFile);
}
// 在上传后处理阶段,将原图转换成压缩后的BufferedImage
BufferedImage compressedImage = compressImage(imageFromDatabaseOrFile);
```
3. 示例整合:
联合上述两部分,可以在上传图片的同时进行压缩,然后存储压缩后的图片:
```java
try {
BufferedImage compressedImage = compressImage(file.getInputStream());
// ...将压缩后的字节数组存储到数据库或文件系统
} catch (IOException e) {
// 处理错误
}
```
阅读全文