2010-03-29 2 views
0

Когда я пытаюсь открыть файл формата JPEG в Rails с помощью RMagick, он всегда возвращает nil с любым файлом jpg. Другие форматы файлов открываются хорошо.RMagick возвращает nil чтение JPEG

$ script/console 
Loading development environment (Rails 2.3.4) 
>> require 'RMagick' 
>> img = Image.read("1.gif").first 
=> 1.gif GIF 230x100 230x100+0+0 PseudoClass 256c 8-bit 2kb 
>> img = Image.read("1.png").first 
=> 1.png PNG 1280x800 1280x800+0+0 DirectClass 8-bit 156kb 
>> img = Image.read("1.jpg").first 
=> nil 

Почему это происходит?

ответ

0

У вас есть библиотека jpeg? http://www.ijg.org/

+0

Да, я переустановил библиотеку libjpeg на версию 8a, тот же результат. – Yuri

+0

Я бегу 'RMagick 2.12.2'. В irb, 'require 'RMagick'', тогда' Magick :: Image.read (' abc.jpg ') 'возвращает' => [abc.jpg JPEG 2000x1003 2000x1003 + 0 + 0 DirectClass 8-bit 1409kb] '. –

0

Я предполагаю, что вы протестировали другие jpg, и все они возвращают null?

Возможно, вы захотите попробовать команду «идентифицировать» в своем приглашении bash (не в irb), чтобы протестировать imagemagick и убедиться, что он не возвращает значение null в jpg.

У меня были проблемы с Rmagick, используя неправильную сборку imagemagick и пришлось перекомпилировать мои библиотеки.

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

+0

Идентификация 1.jpg 1.jpg JPEG 3072x2304 3072x2304 + 0 + 0 8-бит DirectClass 2.692MiB 0.000u 0: 00.010 Это значит, что я сломал RMagick? Да, эти jpegs хорошо открываются с RMagick на моем сайте хостинга. Я заново установил RMagick, но это не помогло. – Yuri

+0

Юрий, это странно, если у вас есть sudo доступ к nav в корневую папку и запустите это: «sudo find. | Grep ident» Просто убедитесь, что не существует нескольких идентификационных двоичных файлов. Кажется, что что-то не так с вашей сборки RMagick. Кажется, он не находит библиотеки jpeg. Если вы обнаружите более одного идентификатора бинарного файла, вы можете удалить драгоценный камень и создать изображение и переустановить все с нуля. Не совсем весело знаю. –

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