获取图像的压缩比

4

我使用LibJPEG来读取压缩的JPEG图片。有没有办法获取未更改的图像的当前压缩比率?


你所说的压缩比是指文件大小相对于 BMP 文件的比率吗? - Argote
哦,抱歉我忘了说我加载JPEG文件。JPEG具有压缩比率。我想知道它是多少。 - Van Coding
你有原始位图吗?只需执行 jpegSize / bmpSize。如果没有,那么你就无法知道比率。我相信有一些元数据标签用于指示使用的jpeg压缩级别,但没有任何东西可以指示源图像文件大小。 - tenfour
嗯...为了确保我们谈论的是同一件事:每个JPEG图像都有从1到100的质量(或压缩比,就像我所说的)。我想要这个值,而不是源文件和结果文件之间的比率。抱歉造成困惑...! - Van Coding
4个回答

8

您是指编码质量,通常是0-100的数字吗?

这并没有被存储 - 它被用作图像编码的指南,以确定波形的精度,然后被丢弃。在任何JFIF头结构中都没有相应的字段。据我所知,在编码器之间没有关于此数字意义的正式定义,因此您无法精确确定任何给定数字的影响。


谢谢!这正是我想知道的 ;) - Van Coding
你甚至不能确定数字的含义,对于有些人来说,0是非常好的,而对于其他人来说,0则是非常非常糟糕的。 - Mark Ransom
@Rup 实际上可以通过检查存储在图像中的JPEG量化表来确定近似的“编码质量”,但这涉及到数字图像取证的领域。 - Mark Setchell

4

如果 Photoshop 保存 Jpeg,压缩级别必须存储在某个地方。多年来,我一直使用 Photoshop 的“另存为”方法来检测所使用的压缩级别。根据我的经验,它总是建议与当前文件使用相同的压缩级别。请注意,您实际上不必保存它。显然,这种方法对于许多文件来说并不适用,但肯定可以证明它必须存储在其中的某个位置。


1
今天我使用 exiftool 检查 JPEG 的元数据时,发现文件中嵌入了这个信息:"PhotoshopQuality = 4"。因此,是的,Photoshop 在 JPEG 文件中存储了自己的质量概念,而且是在一个非标准的头部中。 - Mark Stosberg

2

如果说压缩比,你是指文件大小的相对关系吗?

您可以使用ImageMagick-6.7.5.6中的identify -verbose。

例如:

identify -verbose 1.jpg
(...)
  Geometry: 607x800+0+0
  Resolution: 72x72
(...)
  Filesize: 143KB
  Number pixels: 486K

good

identify -verbose 2.jpg
  (...)
  Geometry: 1719x2377+0+0
  Resolution: 100x100
  (...)
  Filesize: 408KB
  Number pixels: 4.086M

糟糕

convert 2.jpg -resample 72x72 2c.jpg 
identify -verbose 2c.jpg
  Geometry: 1238x1711+0+0
  Resolution: 72x72

  Filesize: 272KB
  Number pixels: 2.118M

更好的解决方案

http://www.imagemagick.org/script/command-line-options.php?#density讨论了这个话题,并以“要将图像调整为在不同分辨率下具有相同大小,请使用-resample选项”结束。

我还发现了一个修改“jpeg质量因子”的工具。Jpegoptim-优化jpeg文件的实用程序。提供无损优化(基于优化哈夫曼表)和基于设置最大质量因子的“有损”优化。 http://www.kokkonen.net/tjko/projects.html

希望这些能对你有所帮助。


1

压缩比 =(未压缩大小)/(压缩大小)。

要自动获取该比率,请下载Irfanview,这是一个免费的Windows图像程序,使用它打开您的图像,然后从中转到“图像” ->“信息” ->您可以在那里看到很多有用的信息,其中包括“压缩”和质量、大小、分辨率和颜色等。现在去-> EXIF信息-> 压缩-> 这里的数字是压缩比。

例如:如果压缩比为6,则原始文件/图像大小比压缩后的文件/图像大小大6倍(您正在查看的文件/图像)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接