如何找到JPG质量?

Nat*_*iel 19 windows gimp metadata jpeg

当我用 GIMP 保存 JPG 文件时,我可以调整我保存它的质量,从 0 到 100(我使用 89)。似乎我已经使用了一个应用程序来查看保存文件中的这个数字,但如果我这样做了,我终生都无法弄清楚它是什么。关于使用什么的任何建议?

sle*_*ske 33

添加到 Arjan 的答案中:

ImageMagickidentify似乎实际上是在查看 JPEG 图像内部以猜测用于对其进行编码的质量设置。

ImageMagick 的源代码(为免费软件加油 :-))包含以下几行

/*
  Determine the JPEG compression quality from the quantization tables.
*/
sum=0;
for (i=0; i < NUM_QUANT_TBLS; i++)
{
  if (jpeg_info.quant_tbl_ptrs[i] != NULL)
    for (j=0; j < DCTSIZE2; j++)
      sum+=jpeg_info.quant_tbl_ptrs[i]->quantval[j];
Run Code Online (Sandbox Code Playgroud)

coders/jpeg.c在我最近版本的 ImageMagick 源代码中,第 843 行)。

我对 JPEG 的了解还不够多,无法真正理解,但它似乎做了类似于本文中描述的事情:

使用 Visual C# .NET 确定 JPEG 质量因子(链接截至 2018 年 1 月已失效;从 2015 年起在 archive.org 上复制

所以是的,identify实际上可以仅从压缩文件中确定 JPEG 的质量设置(尽管结果可能并不总是完全准确)。

  • 哇。很高兴你检查源代码。凉爽的。 (2认同)

Arj*_*jan 25

一旦保存,您就无法再分辨质量了。

(在保存时设置质量只是告诉软件您认为可以接受多少损失,但一旦保存:丢失的东西就丢失了。如果有些东西看起来不错,你需要有人说。)

嗯,我想我错了。我仍然认为上面是正确的,但ImageMagick的identify证明我错了吗?

识别 -verbose myimage.jpg

图片:myimage.jpg
  格式:JPEG(联合图像专家组 JFIF 格式)
  类:直接类
  几何:358x240+0+0
  分辨率:300x300
  [...]
  压缩:JPEG
  质量:90
  方向:未定义
  [...]

我不知道我测试中的图像是如何保存的,但它没有任何 EXIF 数据。质量是否仍然可以存储在图像中?

  • ImageMagick 正在做一些不同的事情。它给出了一个估计,而不是阅读你原来的软件做了什么。您原来的、现已划掉的答案确实更正确。请参阅@sleske 的回答。 (3认同)

Man*_*d3r 9

正如 Arjan 提到的identify -verbose myimage.jpg那样。由于 imagemagick 是一个 CLI 工具,它可能对编写脚本很有用。这种方法identify -verbose myimage.jpg | grep ...非常缓慢。我建议像这样使用 IM

identify -format '%Q' myimage.jpg
Run Code Online (Sandbox Code Playgroud)

它要快得多。