gpt4 book ai didi

java - 使用 spring-boot 应用程序自动压缩/优化图像

转载 作者:行者123 更新时间:2023-11-28 22:25:46 25 4
gpt4 key购买 nike

有没有办法在 spring-boot-application 中自动压缩/优化图像?因为在我的应用程序中,用户可以自己将任何图像放入文件夹中,所以我无法确定,它们是以最佳方式压缩的。而且由于它们不是通过应用程序上传的,所以我也无法创建优化版本。

所以我想做的是在请求图像时压缩/优化图像,并可能将它们保存在一种“图像缓存”中一段时间​​。

或者是否有一个 tomcat/apache-module,它已经可以开箱即用地做这种事情了?

谢谢你的帮助

最佳答案

您可以使用javax.imageio 的类和接口(interface)来压缩给定的图像。下面是 JPG 图像的图像压缩示例。您可以在 spring boot 应用程序中将以下主要方法代码添加到您的服务中。

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;

public class ImageCompression {
public static void main(String[] args) throws FileNotFoundException, IOException{
File imageFile = new File("YOUR_IMAGE.jpg");
File compressedImageFile = new File("YOUR_COMPRESSED_IMAGE.jpg");

InputStream inputStream = new FileInputStream(imageFile);
OutputStream outputStream = new FileOutputStream(compressedImageFile);

float imageQuality = 0.3f;

//Create the buffered image
BufferedImage bufferedImage = ImageIO.read(inputStream);

//Get image writers
Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByFormatName("jpg");

if (!imageWriters.hasNext())
throw new IllegalStateException("Writers Not Found!!");

ImageWriter imageWriter = (ImageWriter) imageWriters.next();
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(outputStream);
imageWriter.setOutput(imageOutputStream);

ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();

//Set the compress quality metrics
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(imageQuality);

//Created image
imageWriter.write(null, new IIOImage(bufferedImage, null, null), imageWriteParam);

// close all streams
inputStream.close();
outputStream.close();
imageOutputStream.close();
imageWriter.dispose();
}
}

关于java - 使用 spring-boot 应用程序自动压缩/优化图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com