2013-04-01 18 views
21

我幾天來一直對此感到震驚。最近,我的圖片上傳器已停止正常工作。我已經研究了幾種可能性,但是沒有任何建議的解決方案適用於我的情況。PaperClip錯誤縮放圖像時出現NotIdentifiedByImageMagickError

的錯誤信息是:

#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError> 

下面是詳細信息:

  • 的Mac OS X 10.8.3
  • 的ImageMagick 6.8.4-4 2013年3月29日
  • libtool =>/usr/bin/libtool
  • Rails 3.2.13
  • Ruby 1.9.3p19 4

development.rb包含適當的路徑(和我已驗證它使用which identify是正確的)

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

Gemfile.lock(相關部分)

paperclip (3.4.1) 
    activemodel (>= 3.0.0) 
    activerecord (>= 3.0.0) 
    activesupport (>= 3.0.0) 
    cocaine (~> 0.5.0) 

MODEL(我更新教室對象,但圖片駐留在位置模型中。 (Classroom has_one :location, :as => :locatable)

型號location.rb

class Location < ActiveRecord::Base 
    ## Paperclip method for uploading location images 

    has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"} 
    has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"} 
    belongs_to :locatable, :polymorphic => true 
    belongs_to :location_type 
    validates :name, :presence => true 

    validates :latitude, :presence => true, 
         :length => {:within => 9..18}, 
         :numericality => true 
    validates :longitude, :presence => true, 
         :length => {:within => 9..18}, 
         :numericality => true 
end 

控制器classrooms_controller.rb

def update 
    @classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase) 

    respond_to do |format| 
    if @classroom.update_attributes(params[:classroom]) 
     format.html { redirect_to(@classroom, :notice => 'Classroom was successfully updated.') } 
     format.xml { head :ok } 
    else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @classroom.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

我已經試過。

  • 我確定圖像名稱很簡單(USB2230.jpg),沒有冒號。
  • 我已經將ImageMagick的版本更新爲最新版本。
  • 我也重新下載並重新安裝了10.8.3的CommandLine工具(有人提出這個問題可能與過時的libtool有關)。
  • 我重新啓動了電腦。
  • 我試過在創業板的版本變化,包括

    # variation 1 
    gem 'paperclip', '~> 2.8.0' 
    gem "cocaine", "=0.3.2" 
    
    # variation 2 
    gem "paperclip", "~> 3.4.0" 
    gem "cocaine", "= 0.4" 
    
    # variation 3 (which is what is reflected in the included Gemfile.lock info above). 
    gem "paperclip", "~> 3.4.0" 
    

如果我刪除縮放,

:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, 
:convert_options => {:show => "-gravity center"} 

上傳的作品,但我種需要縮放;-)

任何人都可以看到我失蹤的東西嗎?

回答

0

我只是解決了這個問題。 brew使目錄調用Cellar,/ usr/local/Cellar 驗證你是否沒有兩個ImageMagick,我有一個名爲ImageMagick-Ruby182的,所以,如果你有它運行brew,卸載ImageMagick-Ruby182,也是正常的imagemagick,並重新安裝圖像魔術。

0

請更新回形針寶石和可卡因寶石的版本。 設置PaperClip版本:3.4.1 設置可卡因版本:0.5。

我面臨同樣的問題,我的問題已經擺在那裏的回形針寶石github上發出

+0

該版本已經在3.4.1和可卡因在0.5.0(如上面列出的Gemfile.lock所示)。 – humbledaisy

3

我有類似的問題,但舊的回形針(3.0.2)。

在我來說,我有固定它:

gem 'cocaine', '0.3.2' 
0

您已經提到過,你試過升級ImageMagick的,但我有同樣的問題,升級到ImageMagick 6.8.0-10 2013-03-03固定對我來說。

+0

謝謝。剛剛更新至2013年5月6日的6.8.5-6,但沒有運氣。 – humbledaisy

10

我有同樣的問題,雖然我的服務器是在Linux上。無法準確告訴你如何去做,因爲我沒有Mac來測試,但希望這能指出你的方向。

這個工作對我的ImageMagick 6.8.5-5,回形針3.4.2,可卡因的最新版本,Rails的3.2.13:

我走進的回形針寶石geometry_detector_factory.rb和註釋掉2圍繞識別呼叫線路:(這一步是沒有必要的,只是解釋我做了什麼,以確定問題)

#silence_stream(STDERR) do 
    Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]") 
#end 

與相應的「結束」語句一起。這使我可以在運行「ide​​ntify」命令時在命令行上看到錯誤。

基本上錯誤說:「沒有解碼委託這種圖像格式」

你或許可以去查找錯誤,並把它弄明白了,但基本上我所做的就是去USR/local/bin目錄並運行:(也沒有必要,除非你想看到你已經安裝)

convert -list configure 

,尋找線代表。我在ImageMagick工作的地方安裝了另一臺Linux服務器,在比較兩臺服務器後,我意識到新服務器只安裝了兩個代理。我能夠運行:

yum install ImageMagick-devel 

然後用make,make install重新編譯ImageMagick並且它工作正常。

您也可以在ImageMagick網站上手動找到代表並逐個安裝它們,但該庫幾乎爲我覆蓋了它。

調試ImageMagick?沒有人爲此付出時間!

+1

謝謝!這在我的客戶端機器上工作。 (我結束了使用mac端口,我不願意這樣做,但我花了太多時間來調試這個)。我遵循的指示在這裏(http://www.imagemagick.org/script/binary-releases.php #macosx)。我還必須將我的開發環境更改爲指向Paperclip.options [:command_path] =「/ opt/local/bin /」 – humbledaisy

+0

您拯救了我的生命。感謝 – lngs

+0

Ubuntu呢? :/同樣的問題在這裏,仍然沒有找到解決方案 – Paladini

21

我們剛剛遇到了這個問題,事實證明這是ghostscript未安裝的問題。我接受了Scott Cornwell的建議並刪除了錯誤的沉默,然後確定轉換失敗,因爲ghostscript不可用。

brew install ghostscript 

修復了我們的問題。

+2

這正是我的問題的原因 - 我使用Paperclip上傳和縮略圖PDF。沒有安裝Ghostscript導致悲傷。 – riney

+0

完美,這解決了我的問題!我試圖簡單地上傳pdf - 不是對其進行縮略圖或任何操作。錯誤消息有點讓人誤解,除非回形針嘗試從pdf中爲您創建縮略圖而沒有明確的請求。 – Dorian

+0

這個。你需要ghostscript來處理PDF文件。謝謝! –

0

重新安裝libtool brew install libtool爲我工作。

5

對我的窗口開發環境有問題,使用回形針3.5.2,可卡因0.5.3和ImageMagic 6.8.8。

溶液中加入:

Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16' 

到配置/環境/ development.rb

+0

這次是一百萬。這是我的問題的答案,我一直試圖/用戶/本地/ bin /和每一個變化無濟於事。 – ddonche

0

當初同樣的問題與image_magic這是打破了我們的回形針功能在生產,而不是在發展(奇怪,我知道)。 即使從本地gemfile和Gemfile.lock中刪除imagemagick(運行bundle install和所有這些東西),然後在heroku上恢復生產,錯誤仍然存​​在於生產中! (很奇怪,我知道)。

什麼落得這樣做的伎倆正在運行:

$ heroku repo:purge_cache -a myAppName 

(來自https://github.com/heroku/heroku-repo#purge_cache

當你部署應用程序,Heroku的緩存有些東西像你的資產和已安裝的寶石,以速度部署部署。 雖然這是一個很棒的功能,但它有時會產生副作用,在這種情況下,似乎imagemagick gem的某些東西在生產的緩存中「卡住」了,這就是爲什麼清除解決了我們的問題(因爲清除後您的應用會重建自己從頭開始你的下一個部署)

0

我有同樣的問題,我解決了它,當我配置動態鏈接器運行時綁定創建必要的鏈接和緩存到最近的共享使用ldconfig command的庫。

所以,你需要使用下面的命令:

sudo ldconfig /usr/local/lib 

其實,我建議使用步驟在how-to-install-image-magick-and-setup-paperclip重新安裝ImageMagick的。

0

只是爲了記錄:

brew uninstall libtool 
brew install libtool 
brew uninstall jpeg 
brew install jpeg 
brew link --overwrite jpeg 
brew unlink freetype && brew link freetype 
相關問題