spring mvc上传图片文件MultipartFile压缩处理

本文介绍了一种使用Java实现的图片处理与上传方法,包括图片格式验证、按比例压缩及固定尺寸压缩等实用技巧,利用thumbnailator库进行高效图片操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 pom文件添加依赖

<!--图片处理工具类-->
        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.8</version>
        </dependency>

2 图片上传工具类

/**
     * 上传图片
     *
     * @param image   图片文件
     * @param baseUrl 基础url
     * @return
     * @throws IOException
     */
    public static String uploadImage(MultipartFile image, String baseUrl) throws IOException {
        String OriginalVideoName = image.getOriginalFilename();
        //后缀
        String imageSuffix = OriginalVideoName.substring(OriginalVideoName.lastIndexOf(".") + 1);
        if (!(imageSuffix.equalsIgnoreCase("jpg") || imageSuffix.equalsIgnoreCase("png") || imageSuffix.equalsIgnoreCase("jpeg"))) {
            return null;
        }

        String fileName = RandomUtil.generateUniqueName() + "." + imageSuffix;
        File file = new File(baseUrl, fileName);

        try {
            // 先尝试压缩并保存图片
            Thumbnails.of(image.getInputStream()).scale(0.7f).outputQuality(0.25f).toFile(file);
        } catch (Exception e) {
            // 失败了再用spring mvc自带的方式
            image.transferTo(file);
        }

        return baseUrl + File.separator + fileName;
    }

//按比例压缩

Thumbnails.of(image.getInputStream()).scale(0.7f).outputQuality(0.25f).toFile(file);

//按尺寸压缩

Thumbnails.of(image.getInputStream()).size(100,100).keepAspectRatio(false).toFile(file);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值