Как проверить, читается ли JPEG

Можно ли проверить, читабельна ли картинка, которую я скачал, если программа просмотра картинок говорит мне, что по какой-то причине не может ее открыть.

Пример:

"invalid byte sequence in conversion input" when mousepad is used because Ephoto could not open it on Linux ) in Ruby

Я загружаю свое изображение с помощью OpenURI, а затем вывожу его в файл. Есть ли функция/жемчужина, которая позволила бы это сделать?

pic_buffer = open(my_link, "User-Agent" => "Ruby/#{RUBY_VERSION}")
if function_to_check_if_the_picture_is_readable(pic_buffer) == false
  abort("file is unreadable")
end
if pic_buffer != nil
  File.open(name_buffer + ".jpg", 'wb') do |pic|
    pic << pic_buffer.read
  end
end

Я загружаю только изображения в формате JPEG.


person Matthieu Raynaud de Fitte    schedule 20.06.2016    source источник
comment
нет, я хотел бы знать, как это сделать в Ruby   -  person Matthieu Raynaud de Fitte    schedule 20.06.2016
comment
так и сделаю, спасибо   -  person Matthieu Raynaud de Fitte    schedule 20.06.2016
comment
@Mo H. изменил вопрос (спасибо за совет)   -  person Matthieu Raynaud de Fitte    schedule 20.06.2016
comment
Добро пожаловать в Stack Overflow. Пожалуйста, прочитайте Как задать вопрос, включая связанные страницы. Нам нужно больше информации. OpenURI — это просто канал от сервера к вашему коду. То, что вы делаете с полученными данными, очень важно, но вы не сообщили нам ничего полезного. Нам нужна самая маленькая версия вашего кода, демонстрирующая проблему. Ознакомьтесь с минимально воспроизводимым примером, чтобы узнать о требованиях. Определить читабельно. Читается учетной записью, под которой запущен код? Читается средством просмотра изображений, потому что файл правильно отформатирован? Ваш вопрос широк. Пожалуйста, задайте конкретный, подробный вопрос.   -  person the Tin Man    schedule 20.06.2016
comment
спасибо, сейчас исправлю   -  person Matthieu Raynaud de Fitte    schedule 20.06.2016
comment
@жестянщик исправил, теперь все в порядке? (извините, я не очень хорошо знаком с методологией вопроса о переполнении стека)   -  person Matthieu Raynaud de Fitte    schedule 20.06.2016
comment
Прочитав страницы справки и просмотрев другие вопросы, вы поймете это. SO — это онлайн-справочник, и вы создаете статью в этой книге, чтобы помочь другим в будущем. Нет необходимости сообщать нам, что вы внесли изменения, мы можем видеть, когда и что изменилось, потому что SO ведет историю изменений.   -  person the Tin Man    schedule 20.06.2016
comment
не знал, спасибо за подсказку   -  person Matthieu Raynaud de Fitte    schedule 20.06.2016
comment
Этот вопрос не является дубликатом назначенного экземпляра: этот вопрос для Delphu; это для Руби.   -  person Wayne Conrad    schedule 21.06.2016


Ответы (1)


Единственный реальный способ узнать, является ли изображение JPEG (как и в случае с большинством форматов сжатых изображений), — это распаковать его. Вы можете выполнить некоторые проверки работоспособности структуры потока, которые покажут некоторые потоки, которые не могут быть открыты. Однако ошибки в сжатых данных можно найти только путем их расширения. В JPEG нет проверки CRC, как в PNG.

person user3344003    schedule 21.06.2016
comment
Любая подсказка о том, как расширить, а затем проверить родной рубин и/или драгоценные камни? - person Matthieu Raynaud de Fitte; 21.06.2016
comment
Нет так. Вам нужно найти расшифровку, которая работает с ними. - person user3344003; 23.06.2016