【问题标题】:Compress images more压缩图像更多
【发布时间】:2019-03-08 02:30:30
【问题描述】:

是否可以更无损地压缩 jpg 和/或 png 图像?我找到了这样做的网站,但我认为这些文件都是以相同的方式压缩的。

我说的压缩,我的意思是它仍然是任何图像程序都可以读取的 jpg 或 png 文件,但文件大小更小。

如果是这样,Java 和 C# 中获得额外压缩的最佳方法是什么?

【问题讨论】:

  • 我不知道您所说的“最佳方式”是什么意思,但stackoverflow.com/questions/14777800/… 将帮助您在 Java 中进行(任意数据流的)压缩。
  • @Ruzihm - gzip 是一般压缩。我想创建一个较小的有效 jpg 或 png 文件。谢谢 - 戴夫

标签: java .net png jpeg


【解决方案1】:

目前有几种压缩算法,其中一些在不同图像中的效果优于其他压缩算法。当您将 Java 和 C# 与图像压缩混合使用时,我不确定您的问题到底想知道什么。

最近有足够多的谷歌开发者发布了new format called WebP。他们声称,与 PNG 相比,这种格式可以提供小 26% 的无损图像,与 JPEG 相比,有损甚至更好,但是对 WebP 的支持仍然非常有限。

您可以做的是利用图片 HTML 元素并提供备用 WebP,并回退到 PNG 或 JPEF 文件。

这是一个例子:

<picture>
  <source srcset="img/awesomeWebPImage.webp" type="image/webp">
  <source srcset="img/creakyOldJPEG.jpg" type="image/jpeg"> 
  <img src="img/creakyOldJPEG.jpg" alt="Alt Text!">
</picture>

这是一篇关于使用 WebP 的好文章:https://css-tricks.com/using-webp-images/

【讨论】:

  • 谢谢您,但我们必须提供 JPG 和 PNG,因为这些图像的最终目的地是 DOCX 和 PDF 文件,因此我们仅限于他们理解的格式。
  • 欢迎,是的,对 webp 的支持还不是很好。也许一个想法是尝试 grunt imagemin 并进行批量转换,然后与您当前的缩小进行大小比较,这种自动化将同时接受 JPG 和 PNG。在此处查看更多信息:scriptverse.academy/tutorials/…
【解决方案2】:

所有 JPEG 压缩本质上都是有损的。 RGBYCrCb 转换通常需要修改值,因为色彩空间的色域不同。 JPEG 压缩涉及四舍五入为整数的浮点值。

有很多 JPEG 设置可用于权衡损失与大小。您是否可以访问它们取决于您的编码器。

在 PNG 的情况下,唯一真正的大小设置是编码器在 LZ 窗口中搜索匹配的距离。在 PNG 中,这是压缩速度和大小之间的权衡。

【讨论】:

  • 除非我不明白,否则有无损 JPEG - en.wikipedia.org/wiki/Lossless_JPEG
  • 对于PNG,如果我们不关心速度,有什么建议可以给我们最小尺寸的库吗?我们在 Java 和 .NET 中都需要这个。谢谢 - 戴夫
  • 医疗行业使用12 bpp无损jpeg。除此之外,它很少得到支持。我不知道 Java 和 .NET 上有任何用于 PNG 的库。我的猜测是 PNG 参考实现就是这样做的。
猜你喜欢
  • 2020-02-29
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
相关资源
最近更新 更多