Thumbnailator 压缩图片

Github地址 https://github.com/coobird/thumbnailator

不废话,直接上代码

/**
     * 智能识车接口
     * 拍照识车 一图一车
     * ByteArrayResource
     *
     * @param deviceId
     * @return
     */
    @RequestMapping(value = "demo", method = RequestMethod.POST)
    @org.springframework.web.bind.annotation.ResponseBody
    public String demo(@RequestParam(value = "file") MultipartFile file, String deviceId, HttpServletRequest request) {

        String uri = "上传uri";
        String appKey = "appkey";
        String secret = "secret";
        String sign = "sign";

        try {
            RestTemplate restTemplate = restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(5))
                    .setReadTimeout(Duration.ofSeconds(10)).build();
            List<String> cookies = CookieHelper.getCookieList(request);
            //构造请求头
            HttpHeaders headers = new HttpHeaders();
            headers.put("Cookie", cookies);
            headers.add("appKey", appKey);
            headers.add("sign", sign);
            headers.add("deviceId", deviceId);
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);

            MultiValueMap<String, Object> map = new LinkedMultiValueMap();

            String fileName = file.getOriginalFilename();
            // 获取文件的后缀名,比如图片的jpeg,png
            String suffixName = fileName.substring(fileName.lastIndexOf("."));
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            //Thumbnails.fromInputStreams(Arrays.asList(file.getInputStream())).scale(0.5).toFile("E:\images\a.jpg");
            //Quality png格式不起作用,先转换为jpg 格式,再应用
            Thumbnails.fromInputStreams(Arrays.asList(file.getInputStream())).scale(0.5).outputQuality(0.8).toOutputStream(os);
            ByteArrayResource arrayResource = new ByteArrayResource(os.toByteArray()) {
                @Override
                public String getFilename() throws IllegalStateException {
                    return fileName;
                }
            };

            Resource resource = arrayResource;

            map.add("cid", 300);
            map.add("file", resource);
            HttpEntity requestEntity = new HttpEntity(map, headers);
            ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, requestEntity, String.class);

            HttpHeaders headersRes = responseEntity.getHeaders();
            return responseEntity.getBody();
        } catch (IOException ex) {
            ex.printStackTrace();
            System.out.println(ex);
        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.println(ex);
        }
        return "";
    }
原文地址:https://www.cnblogs.com/xiyoujiyjy/p/15217407.html