C++ 获取图像的压缩比

C++ 获取图像的压缩比,c++,compression,jpeg,libjpeg,C++,Compression,Jpeg,Libjpeg,我使用LibJPEG读取JPEG压缩图像。有没有办法获得未更改图像的当前压缩比?您指的是编码质量,通常是0-100 这不是存储的-它被用作图像编码的指南,以确定波的准确度,然后被丢弃。在任何JFIF头结构中都没有它的字段。据我所知,这个数字在编码器中的含义没有正式的定义,因此你无法准确地确定任何给定数字的效果。如果Photoshop保存Jpeg,压缩级别必须存储在某个地方。多年来,我一直使用Photoshop的“文件另存为”来检测使用的压缩级别。根据我的经验,它总是建议使用与当前文件相同的压缩级

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

您指的是编码质量,通常是0-100


这不是存储的-它被用作图像编码的指南,以确定波的准确度,然后被丢弃。在任何JFIF头结构中都没有它的字段。据我所知,这个数字在编码器中的含义没有正式的定义,因此你无法准确地确定任何给定数字的效果。

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

如果是压缩比,您是指相对文件大小吗

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

例如:

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

坏的

好多了

讨论此主题,并以“要调整图像大小,使其在不同分辨率下具有相同大小,请使用-resample选项”结束

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

希望能对你有所帮助

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

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


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

压缩比是指相对于BMP文件的filsize吗?哦,对不起,我忘了说我加载了JPEG。JPEG有一个压缩比。我想知道。你有原始位图吗?只需执行
jpegSize/bmpSize
。如果不是,那么你就不能知道这个比率。我相信对于使用的jpeg压缩级别有一些元数据标记,但是没有任何东西可以指示源图像文件的大小。。。为了确保我们谈论的是同一件事:每个JPEG图像的质量(或压缩比,我称之为)都在1到100之间。我想要这个值,而不是源文件和结果文件之间的比率。抱歉搞混了。。。!谢谢这就是我想知道的;)您甚至不能确定数字的含义,因为有些0非常好,有些0非常坏。@Rup实际上可以通过检查JPEG量化表来确定近似的“编码质量”这些都存储在图像中-但这进入了数字图像取证领域。我今天使用
exiftool
检查JPEG的元数据,我在文件中发现了这一点:“PhotoshopQuality=4”。是的,Photoshop将自己的质量概念存储在JPEG文件的非标准头中。
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