2010-03-29 80 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