2010-03-29 54 views
0

當我嘗試在使用RMagick的Rails中打開JPEG格式文件時,它始終返回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 2010-03-29 22:20:46

+0

我正在運行'RMagick 2.12.2'。在irb中,'require'RMagick'',然後'Magick :: Image.read('abc.jpg')'returns'=> [abc.jpg JPEG 2000x1003 2000x1003 + 0 + 0 DirectClass 8-bit 1409kb]'。 – 2010-03-30 00:02:31

0

我假設你已經測試了其他jpgs,它們都返回null?

您可能想在bash提示符(而不是irb)中嘗試'identify'命令來測試imagemagick並確保它不會在jpg上返回null。

我對使用imagemagick的錯誤構建的Rmagick有問題,不得不重新編譯我的庫。

除此之外,您可能正在處理一個損壞的.jpg文件,但沒有正確保存其文件頭。

+0

identify 1.jpg 1.jpg JPEG 3072x2304 3072x2304 + 0 + 0 8位DirectClass 2.692MiB 0.000u 0:00.010 這意味着我已經損壞了RMagick?是的,這些jpeg在我的託管網站上與RMagick打開很好。 我重新安裝了RMagick,但沒有幫助。 – Yuri 2010-04-01 00:32:03

+0

尤里,這很奇怪,如果你有sudo訪問導航到你的根文件夾並運行這個:「sudo find。| grep identify」只是爲了確保沒有多個識別二進制文件。它確實顯示您的RMagick版本出現問題。它似乎沒有找到jpeg庫。如果您發現多個標識二進制文件,您可能需要刪除gem和imagemagick,並從頭開始重新安裝所有這些文件。我知道的不是很有趣。 – 2010-04-01 15:23:37