2011-08-16 75 views
0

i'm公認編輯模型時,特別是當我刪除與之關聯的圖像得到這個錯誤,我選擇另一:回形針:: 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_images,並pack_images有照片爲相關的包裝,這裏有關係:

class Pack < ActiveRecord::Base 
    has_many :pack_images, :dependent => :destroy 
end 

class PackImage < ActiveRecord::Base 
    belongs_to :pack 
    attr_accessor :height, :width 

    has_attached_file :photo, :url => "/: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 

我注意到,在更新時,我比創建時(照片的名稱,文件類型,寬度,高度等)獲得更少的參數(只有照片的名稱)。

我希望你能幫助我

非常感謝您

+0

請看這個http://stackoverflow.com/a/12771707/1472432 –

回答

0

嘗試從ImageMagick的這一形象上運行的「識別」命令。這似乎與您的ImageMagick安裝。

+0

我做到了,它運行良好,它給了我關於像寬度和高度,名稱等圖像的數據。 – brianfalah

+0

正如Arun所說,您需要設置此命令的正確路徑(使用** Paperclip :: Attachment.default_options [:command_path] ='c:\ Program Files \ ImageMagick \ bin \'**)。此路徑將是identify.exe命令所在的位置。嘗試使用以下命令檢查終端內的$ PATH變量:** echo%path%**。 –

1

找到識別的命令是這樣的路徑:

$ which identify 

對我來說,上面的命令打印此:

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

對不起,我忘了說我在窗口工作,我怎麼能獲得這條路? – brianfalah

2

它使用:/usr/local/bin/identify

在一些初始化文件中添加這爲PDF和圖像工作正常,試用了一個小時左右,然後我搜索了一切後,問題發現在我的模型has_attached_file :attachment

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

不得不註釋此行,並在你的情況下工作了其他附件例如DOCX或ODT等。

所以:styles => {:principal => "240x240>", :original => "400x400>"} 退房和評論。

+0

我也試過這個並刪除了那個錯誤,但是我不知道它的安全是否永遠... – Milind

0

我有完全相同的問題。 Windows 8 64bit,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 

瞧回形針的作品!出現此錯誤

1

一個原因是當您嘗試確定圖像中不存在尺寸:

Paperclip::Geometry.from_file(nil)

此命令將掛起,並導致此錯誤。

+0

在Ruby/Rails中,你得到的錯誤是'Paperclip :: NotIdentifiedByImageMagickError:nil不能被'identify'命令識別.'現在我只需要弄清楚爲什麼文件沒有被創建... – FireDragon

相關問題