‘identify’命令无法识别Paperclip :: NotIdentifiedByImageMagickError图像

当我删除与其关联的图像并且我选择另一个时,我在编辑模型时遇到此错误:

Paperclip::NotIdentifiedByImageMagickError in Admin/packsController#update Chrysanthemumprueba4.jpg is not recognized by the 'identify' command. C:/Users/.../vendor/plugins/thoughtbot-paperclip-fc792c8/lib/paperclip/geometry.rb:24:in `from_file' 

但是当我创建一个新包并为其选择图像时,它可以正常工作。

我有两个表:pack和pack_images,pack_images有相关包的照片,这里是关系:

 class Pack  :destroy end class PackImage  "/:attachment/:class/:id/:style_:basename.:extension", :styles => {:principal => "240x240>", :original => "400x400>", ...} end 

这是控制器的操作,它会引发错误:

 def update @pack = Pack.find(params[:id]) @pack.pack_products unless params[:pack][:pack_images_attributes].nil? params[:pack][:pack_images_attributes].count.times do |i| unless params[:pack][:pack_images_attributes][:"#{i.to_s}"][:photo].blank? file = params[:pack][:pack_images_attributes][:"#{i.to_s}"][:photo] dimensions = Paperclip::Geometry.from_file(file) @pack.pack_images[i].width = dimensions.width @pack.pack_images[i].height = dimensions.height end end end respond_to do |format| @pack.update_attributes(params[:pack]) format.html { redirect_to(admin_pack_path(@pack.id), :notice => 'Pack updated') } end 

我注意到,在更新时,我获得的参数(只有照片的名称)比创建时少(照片的名称,文件类型,宽度,高度等)。

我希望你能帮帮我

非常感谢你

它曾经适用于pdf和图像,尝试了一个小时左右,后来我搜索的所有内容,我的模型中发现问题has_attached_file :attachment

 :styles => {:original=> "125x125#"} 

不得不评论这一行,它适用于其他附件,如docx或odt等。

所以在你的情况下:styles => {:principal => "240x240>", :original => "400x400>"}签出并发表评论。

找到识别命令的路径,如下所示:

 $ which identify 

对我来说,上面的命令打印出: /usr/local/bin/identify

在一些初始化文件中添加:

 Paperclip::Attachment.default_options[:command_path] = "/usr/local/bin" 

发生此错误的一个原因是当您尝试确定不存在的图像的尺寸时:

回形针:: Geometry.from_file(无)

此命令将挂起并导致此错误。

尝试在此图像上运行ImageMagick中的“识别”命令。 这似乎与您的ImageMagick安装有关。

我有完全相同的问题。 Windows 8 64位,Rails 4,ImageMagick-6.8.7-1-Q16-x64-static.exe。 这样做:在rails应用程序的根目录中(来自Git Bash)

 $ which identify /c/Program Files/ImageMagick-6.8.7-Q16/./identify 

然后

 $ cd "/c/Program Files/ImageMagick-6.8.7-Q16" 

不要忘记引号。 将所有可执行文件复制到您的/ bin目录。 我确实复制了所有这些文件。

 $ cp * /bin 

voila paperclip有效!