要实现Java上传图片并压缩图片大小的功能,我们可以通过以下步骤完成:
Step 1: 添加依赖
我们需要向项目中添加一些依赖,以便能够操作图片。这里我们推荐使用 Thumbnails这个依赖库,可以简化图片处理操作。
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
Step 2: 创建文件上传控制器
在SpringMVC框架中创建一个用于上传文件的控制器。可以使用MultipartFile类来接收客户端上传的文件,然后将这个文件保存在服务器本地。同时,我们也可以在后台对文件进行一些处理(比如压缩图片)。
@PostMapping("/upload")
@ResponseBody
public Map<String, Object> upload(@RequestParam MultipartFile file) {
...
return result;
}
Step 3: 对文件进行处理
在上传文件后,我们可以对文件进行一些处理。这里以压缩图片为例,使用 Thumbnails 将图片处理成指定的大小和质量。
@PostMapping("/upload")
@ResponseBody
public Map<String, Object> upload(@RequestParam MultipartFile file) {
try {
BufferedImage image = ImageIO.read(file.getInputStream());
BufferedImage newImage = Thumbnails.of(image)
.size(200, 200)
.outputQuality(0.8f)
.asBufferedImage();
// 保存图片
File destFile = new File("save_path");
ImageIO.write(newImage, "jpg", destFile);
...
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
通过以上的方式,我们就实现了Java上传图片并压缩图片大小的功能。
下面是完整的代码示例1:
// 依赖
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
// Controller
@PostMapping("/upload")
@ResponseBody
public Map<String, Object> upload(@RequestParam MultipartFile file) {
try {
BufferedImage image = ImageIO.read(file.getInputStream());
BufferedImage newImage = Thumbnails.of(image)
.size(200, 200)
.outputQuality(0.8f)
.asBufferedImage();
// 保存图片
File destFile = new File("save_path");
ImageIO.write(newImage, "jpg", destFile);
...
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
完整的代码示例2:
// 依赖
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
// Service
@Service
public class ImageService {
private String savePath = "/Users/xxx/images/";
public void compressImage(MultipartFile file) throws IOException {
BufferedImage image = ImageIO.read(file.getInputStream());
BufferedImage newImage = Thumbnails.of(image)
.size(200, 200)
.outputQuality(0.8f)
.asBufferedImage();
// 保存图片
File destFile = new File(savePath + file.getOriginalFilename());
ImageIO.write(newImage, "jpg", destFile);
}
}
// Controller
@PostMapping("/upload")
@ResponseBody
public Map<String, Object> upload(@RequestParam MultipartFile file) {
try {
imageService.compressImage(file);
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
以上两个示例代码都可以实现Java上传图片并压缩图片大小的功能。其中示例1使用的是控制器来实现,示例2使用了一个Service来实现。根据实际情况来选择哪种方式会更方便。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现上传图片并压缩图片大小功能 - Python技术站