2013-07-19 7 views
1

Я использую ImageMagick (с Wand на Python) для преобразования изображений и получения эскизов из них. Тем не менее, я заметил, что мне нужно проверить, является ли файл образным или не раньше времени. Должен ли я делать это с помощью Identify?ImageMagick для проверки целостности изображения

Так что я бы предположил, что для проверки целостности файла нужен весь файл для чтения в память. Лучше попробовать и преобразовать файл, и если произошла ошибка, то мы знаем, что файл был неудачным.

ответ

5

кажется, вы ответили на свой вопрос

$ 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 
+1

Вот еще одно решение, использующее идентификатор, но без преобразования: 'ident -verbose * .png 2> & 1 | grep «поврежденное изображение» ' ' идентификация: поврежденное изображение 'image_with_error.png' @ error/png.c/ReadPNGImage/4051.' –

-2

я использую определить:

$ identify image.tif 
00000005.tif TIFF 4741x6981 4741x6981+0+0 8-bit DirectClass 4.471MB 0.000u 0:00.010 
$ echo $? 
+0

идентификация вернет 0 даже для поврежденных изображений. –

1

Вот еще одно решение с помощью идентификации, но без обращенного:

identify -verbose *.png 2>&1 | grep "corrupt image"

identify: corrupt image 'image_with_error.png' @ error/png.c/ReadPNGImage/4051.

Смежные вопросы