ImageMagick验证图像完整性

Kia*_*ash 3 imagemagick imagemagick-convert wand

我正在使用ImageMagick(使用Python中的Wand)来转换图像并从中获取缩略图.但是,我注意到我需要提前验证文件是否是图像.我应该用识别吗?

所以我认为检查文件的完整性需要将整个文件读入内存.尝试转换文件是更好的,如果有错误,那么我们知道文件不好.

sti*_*tib 10

如果您regard-warnings使用 imagemagick识别工具指定标志

magick identify -regard-warnings myimage.jpg
Run Code Online (Sandbox Code Playgroud)

如果有关于该文件的任何警告,它将引发错误。这对于检查图像很有用,并且似乎比使用 verbose 快得多。


jsp*_*jsp 8

好像你回答了自己的问题

$ ls -l *.png
-rw-r--r-- 1 jsp jsp 526254 Jul 20 12:10 image.png
-rw-r--r-- 1 jsp jsp  10000 Jul 20 12:12 image_with_error.png
$ identify image.png &> /dev/null; echo $?
0
$ identify image_with_error.png &> /dev/null; echo $?
0
$ convert image.png /dev/null &> /dev/null ; echo $?
0
$ convert image_with_error.png /dev/null &> /dev/null ; echo $?
1
Run Code Online (Sandbox Code Playgroud)

  • 这是使用识别的另一种解决方案,但没有转换:`identify -verbose*.png 2>&1 | grep"corrupt image"``识别:腐败图像'image_with_error.png'@ error/png.c/ReadPNGImage/4051. (2认同)
  • @ArtemRussakovskii `识别 -verbose *.png 2>&1 | grep“错误”`会更好。我有很多文件在识别的输出中没有任何“损坏的图像”文本 (2认同)
  • 如果有任何错误,“identify -verbose image.png”实际上会以“1”代码退出。无需 grep。然后您可以检查 stderr。问题是,如果不包含“-verbose”标志,它会以“0”退出。 (2认同)