Проверьте, является ли файл допустимым изображением - PullRequest
2 голосов
/ 07 мая 2010

Я использую rmagick для работы с файлами изображений. Я использую ImageList.new для каждого файла, чтобы начать. Когда я применяю этот метод к неверному файлу изображения, я получаю следующую ошибку, которая прерывает выполнение скрипта:

RMagick.rb: 1635: in `read ': неправильный заголовок изображения (Magick :: ImageMagickError)

Поэтому я хотел бы иметь возможность проверить, является ли файл допустимым файлом изображения, перед использованием этого метода.

Есть идеи? Спасибо.

Ответы [ 3 ]

3 голосов
/ 08 мая 2010

Исключение выглядит как идеальный сигнал о том, что изображение недействительно ... Почему бы просто не спасти его?

Если вы действительно хотите применить некоторые другие тесты, вы можете использовать FastImage и запросить, например, тип или размер, и вы получите nil, если заголовок поврежден.

2 голосов
/ 14 июня 2016

Вы можете проверить формат изображения. Например:

image = Magick::Image::read(file_path).first
image.format

Таким образом, вы можете проверить, является ли формат одним из ожидаемых:

image = Magick::Image::read(file_path).first
%w(JPEG GIF TIFF PNG).include? image.format

Это не основано на расширении имени файла. Это дает вам фактический формат файла.

0 голосов
/ 07 мая 2010

Если вы обрабатываете изображения определенного формата (ов), вы можете проанализировать их заголовки, чтобы определить, действительно ли они являются действительными файлами изображений.

Например, первые 3 байта заголовка файла GIF - это «GIF», в соответствии с этой спецификацией GIF - поэтому, если вы получаете файл с расширением .gif, вы можете проанализировать его в убедитесь, что его заголовок соответствует спецификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...