从 pagespeed 我只得到图像链接和可能的字节数和百分比优化,比如, 压缩和调整大小 https://example.com/…ts/xyz.jpg?036861可以节省 212KiB(减少 51%)。 压缩 https://example.com/…xyz.png?303584508可以节省 4.4KiB(减少 21%)。
例如,我有一个大小为 300kb 的图像,对于此图像,pagespeed 显示 100kb 和 30% 的缩小。
这只是一张图片,但我相信我会有很多图片需要压缩。 那么如何通过将字节或百分比作为参数传递或在 Java 中使用任何其他计算来压缩图像 (通过使用 API 或图像处理工具)这样我就可以按照谷歌的建议获得图像的压缩版本。
提前致谢。
最佳答案
您可以使用 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
还有一些像这样的第三方工具
编辑:如果您想在您的应用程序中使用 Google PageSpeed
,它可以作为 Apache 或 Nginx 的网络服务器模块使用,您可以找到如何配置它在这里为您的网站
https://developers.google.com/speed/pagespeed/module/
但如果您想在您的应用程序中集成 PageSpeed
C++ 库,您可以在此处找到它的构建说明。
https://developers.google.com/speed/pagespeed/psol
这里还有一个Java客户端
关于java - 如何使用java压缩图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565500/