当我使用Magick::readImages(...)函数读取jpeg图像时,如何知道图像的估计jpeg质量?我知道如何在写入图像时设置质量,但它与原始图像的质量无关。例如:当我读取一个80%质量的jpeg图像并使用90%的质量进行写入时,我将得到比原始图像更大的图像,因为90%不是基于原始80%的90%。我如何知道读取图像的jpeg质量?
gm convert -log %e -debug coder in.jpg junk.ppm
然后在输出中寻找以下行:
Quality: nn
如果图像是由Independent JPEG Group软件创建的,或者是:
Quality: nn (近似值)
否则,你也可以使用以下命令:
gm identify -verbose in.png
查看以下行:
Quality: nn
但是,这个方法不能区分精确质量和近似质量。
convert
实际上显示为“Quality: Fine”,而 identify
返回了 99。无论如何,与类似问题的答案一样 - 可以通过重新压缩到相同/最接近的大小(例如通过二进制搜索)来估计质量。 - Tomasz Gandorgm identify -format "%[JPEG-Quality]" your-photo.jpg
在C++中,可能会使用IdentifyImage
:https://imagemagick.org/api/MagickCore/identify_8c.html#a91079e7db05c1bad53b2dbb2b01f41ba
话虽如此,正如其他用户所说,这只是由生成图像的软件生成的数字。事实上,我可以看到GM 1.4在没有配置文件信息的JPEG上返回空值,但GM 1.3.35使用jpeg.c/EstimateJPEGQuality/932/Coder
(返回100%)进行猜测。