springboot图片压缩接口

1、引入压缩图片相关工具maven

		<dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.17</version>
        </dependency>

        <dependency>
            <groupId>org.sejda.imageio</groupId>
            <artifactId>webp-imageio</artifactId>
            <version>0.1.6</version>
        </dependency>

2、编写主要逻辑

package com.example.picturecompression;

import net.coobird.thumbnailator.Thumbnails;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

/**
 * @Author sandul
 * @Version 1.0
 * @Description:
 * @Date 2022/9/5 15:06
 */
@RestController
public class PicController {

    @Autowired
    private Environment environment;

    @PostMapping("/upload")
    public void picCompressionUpload(HttpServletResponse response, Integer picWidth, Integer picHeight, MultipartFile pic) {

        // Integer picWidth 传入的宽
        //  Integer picHeight 传入的高
        //  MultipartFile pic 传入的文件

        try (
                InputStream inputStream = new ByteArrayInputStream(pic.getBytes());
                ServletOutputStream outputStream = response.getOutputStream()
        ) {
            if (picWidth == null ) {
                // 如果没有传入宽,尝试从配置文件获取
                String width = environment.getProperty("picture.compress.width");
                picWidth = width == null ? null : Integer.valueOf(width);
            }
            if (picHeight == null ) {
                // 如果没有传入高,尝试从配置文件获取
                String height = environment.getProperty("picture.compress.height");
                picHeight = height == null ? null : Integer.valueOf(height);
            }
            Thumbnails.of(inputStream)
                    //picWidth:图片宽度
                    //picHeight:图片高度
                    .size(picWidth == null ? 1080 : picWidth, picHeight == null ? 1440 : picHeight)
                    .toOutputStream(outputStream);
            response.setCharacterEncoding("UTF-8");//响应编码
            response.setContentType(pic.getContentType());//响应文件类型
            response.setHeader("Content-Disposition","attachment;fileName="+pic.getOriginalFilename());//响应头
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3、基本配置

# 图片宽、高  压缩
picture.compress.width=1080
picture.compress.height=1920

# 服务器最大上传请求
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
spring.servlet.multipart.enabled=true
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值