优化图像 – 用Java无损压缩图像

拥有一个电子商务网站,我们有数以千计的产品图片。 在google上检查pagespeed时它会显示如下:

在此处输入图像描述

我想知道,如果Java中有任何内置function或任何第三方库可用,我们可以无损压缩我们托管的所有图像。 因此,我们可以节省几KB的客户。

通过互联网搜索我发现很少像punnypng和kraken付费,因此我们没有每月上传重型图像,订阅它们是不值得的。 我更喜欢Java或任何开源第三方库中的任何内置function。

我遇到了JAI ,但不确定它是否解决了这个问题。 有实际操作经验的人吗?

PS我们正在使用Java 8

您是否查看了javax.imageio包中的类( http://docs.oracle.com/javase/7/docs/api/javax/imageio/package-summary.html )?

您可以对图像进行解码和重新编码。 ImageWriteParam类( http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageWriteParam.html )允许您自定义压缩设置。

~600 KB jpeg图像对于屏幕非常大,但不适合打印。 在页面上具有多个图像意味着使或多或少的“拇指”视图更小。 并提供具有更高分辨率的单个产品页面,例如600 KB JPEG。 标准ImageIO足以进行转换,请参阅@NicolaFerraro。

通过将较小的视图存储到一个大图像中,可以在具有多个图像的概览页面上实现更快的页面加载。 然后可以使用PNG来防止JPEG伪像。

要为打印提供更高的分辨率,可以使用CSS媒体设置。

检查thumbnailator 。 它非常适合从较大的图像中制作较小的图像。

此外,您应该考虑何时制作这些较小的图像。 在每次通话时,在第一次通话时(任何保持缓存),……