java 实现图片压缩

1、引入依赖

   <!-- 图片压缩 -->
        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.8</version>
        </dependency>

2、压缩工具类

	/**
	 * scale(0.8f)scale是可以指定图片的大小,值在0到1之间,1f就是原图大小,0.5就是原图的一半大小,
	 * outputQuality(0.5f)是图片的质量,值也是在0到1,越接近于1质量越好,越接近于0质量越差。
	 * outputFormat("jpg") 转换图片格式
	 * rotate(角度),正数:顺时针 负数:逆时针
	 * .toOutputStream(os);
	 */
	public static InputStream compressImg(MultipartFile file, InputStream inputStream)
	{
    
    
		try {
    
    
			BufferedImage bufImg = Thumbnails.of(inputStream).scale(0.7f).outputQuality(0.5f).outputFormat("jpg").asBufferedImage();
			ByteArrayOutputStream bs = new ByteArrayOutputStream();
			String frontFileName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
			ImageIO.write(bufImg, frontFileName, bs); //图片写入到 ImageOutputStream
			inputStream = new ByteArrayInputStream(bs.toByteArray());
			log.info("压缩前文件大小:" + file.getSize() / 1024 + "kb---" + "压缩后文件大小:" + bs.toByteArray().length / 1024 + "kb");
			return inputStream;
		} catch (IOException e) {
    
    
			e.printStackTrace();
		}
		return null;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_37741426/article/details/130105089