您可以使用Java ImageIO
包为许多图像格式做了压缩,这里有一个例子
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Iterator;
import javax.imageio.*;
import javax.imageio.stream.*;
public class Compresssion {
public static void main(String[] args) throws IOException {
File input = new File("original_image.jpg");
BufferedImage image = ImageIO.read(input);
File compressedImageFile = new File("compressed_image.jpg");
OutputStream os = new FileOutputStream(compressedImageFile);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.05f); // Change the quality value you prefer
writer.write(null, new IIOImage(image, null, null), param);
os.close();
ios.close();
writer.dispose();
}
}
你可以找到关于它here
也有一些第三方工具,如更多细节这些
编辑:如果你想在你的应用程序中使用谷歌PageSpeed
,可用的是无论是对Apache或Nginx的网络服务器模块,你可以找到如何配置它为您的网站在这里
https://developers.google.com/speed/pagespeed/module/
但是,如果您想将PageSpeed
C++库集成到您的应用程序中,您可以在这里找到它的构建指令。
https://developers.google.com/speed/pagespeed/psol
它也有在这里
https://developers.google.com/api-client-library/java/apis/pagespeedonline/v1
使用ImageWriteParam我得到了图像的压缩版本,但我不需要压缩任何谷歌网页速度建议。 所以,基本上我想图像的压缩版本无论谷歌网页速度暗示。 –
@DarshitPatel我已经更新了我的答案,请检查它 – fujy
关于此答案的很多有趣的信息。谢谢:) –