检查图像可见质量[PHP]

时间:2015-04-30 07:17:35

标签: php image imagemagick gd

我想要进行图像质量检查。也许计算出那种质量的一些指标。

例如,假设用户A上传了http://www.hyperconectados.com/wp-content/uploads/2014/03/Selfie.jpg

之类的内容

用户B上传类似http://www.privatewifi.com/wp-content/uploads/2014/02/selfie.jpg

的内容 很明显,B照片很专业,质量很好。还有另一件事,使用图像大小和重量(?)并不好,因为B图像可以调整大小,照片或其他东西(丢失一些图像数据)。

有没有办法检测出这种差异? :)有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我仍在考虑进一步的指标,但目前......

IPTC简介和/或版权

我想说的是,如果没有IPTC资料和版权声明,大多数专业摄影师都不会让图像出门。

您可以使用ImageMagick找到:

identify -verbose image.jpg | grep -i profile

并且您的第二张图片出现了

Profile-8bim: 104 bytes
Profile-iptc: 92 bytes

您实际上可以像这样阅读个人资料:

convert b.jpg 8BIMTEXT:-

8BIM#1028="IPTC"
2#103#Original Transmission Reference="53616c7465645f5fb085443d8e4c5898afc929fa83c3cc27d7bf6da5d5f63efdf47888b1a19ac93e"
2#0="�"

convert b.jpg IPTCTEXT:-

2#103#Original Transmission Reference="53616c7465645f5fb085443d8e4c5898afc929fa83c3cc27d7bf6da5d5f63efdf47888b1a19ac93e"
2#0="�"

分辨率(dpi)

另一种判别可能是解决方案。大多数手机,业余爱好者和基于网络的图像的分辨率为72dpi或96dpi。大多数专业摄影师倾向于支持300dpi的高质量打印,所以我可能会达到150dpi左右的阈值。你可以得到这样的分辨率:

identify -verbose image.jpg | grep -i resolution

或更快,更简洁

identify -format %x image.jpg
300

我注意到你的第一张图片有72dpi,第二张图片有300dpi。

增强范围

我想到的另一个想法是,如果您尝试以数字方式增强图像,然后看到增强图像与原始图像之间的差异,并尝试从中推断出某些内容,会发生什么。据推测,专业编辑的图像不应该在它应该已经“好”的基础上易于增强。所以,假设我们选择ImageMagick的-enhance选项,并增强您的两个图像,然后查看原始图像和增强图像之间的差异。我将切换到无损PNG格式以避免JPEG量化效果。

# Make PNG
convert a.jpg a.png

# Enhance "a.png" and save as "ae.png"
convert a.png -enhance ae.png

# Compare "a.png" with "ae.png"
compare -metric rmse a.png ae.png -format "%[distortion]" resa.png
360.479 (0.00550055)0.00550055

enter image description here

现在为第二个专业形象做同样的程序:

# Make a comparably sized PNG
convert b.jpg -resize 1200x1200 b.png

convert b.png -enhance be.png
compare -metric rmse b.png be.png -format "%[distortion]" resb.png
421.08 (0.00642527)0.00642527

enter image description here

我还在考虑这个......

答案 1 :(得分:0)

Imagemagick读取质量

$ identify -verbose tornado_ok.jpg | grep Quality

有关identify

的更多信息

question

获取信息