拥有一个电子商务网站,我们拥有数以千计的产品图片。在google上检查pagespeed时,它显示了类似这样的内容:
我想知道,如果Java中有任何内置功能或任何第三方库可用,我们可以无损压缩我们托管的所有图像。因此,我们可以节省几个KB的客户。
通过互联网搜索我发现很少有像punnypng和kraken那样付费,因此我们每个月都没有上传重图像,订阅它们是不值得的。我更喜欢Java或任何开源第三方库中的任何内置功能。</ p>
我遇到了 JAI ,但不确定它是否解决了这个问题。有实际操作经验的人吗?
P.S。我们正在使用Java 8
答案 0 :(得分:2)
您是否查看了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)允许您自定义压缩设置。
答案 1 :(得分:0)
~600 KB jpeg图像对于屏幕非常大,但不适合打印。在页面上具有多个图像意味着使或多或少的“拇指”视图更小。并提供具有更高分辨率的单个产品页面,例如600 KB JPEG。 标准ImageIO足以进行转换,请参阅@NicolaFerraro。
通过将较小的视图存储到一个大图像中,可以在具有多个图像的概览页面上实现更快的页面加载。然后可以使用PNG来防止JPEG伪像。
要为打印提供更高的分辨率,可以使用CSS媒体设置。
答案 2 :(得分:0)
检查thumbnailator。它非常适合从较大的图像中制作较小的图像。
此外,您应该考虑何时制作这些较小的图像。在每次通话时,在第一次通话时(任何保持缓存),......