web-dev-qa-db-ja.com

画像の拡大縮小時のPaperClipエラーNotIdentifiedByImageMagickError

私はこれに対して頭を数日間叩き続けてきました。最近、画像アップローダーが正しく動作しなくなりました。私はいくつかの可能性を調査しましたが、提案された解決策のどれも私の場合うまくいきませんでした。

エラーメッセージは次のとおりです。

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

詳細は次のとおりです。

  • Mac OS X 10.8.3
  • ImageMagick 6.8.4-4 2013-03-29
  • libtool =>/usr/bin/libtool
  • Rails 3.2.13
  • Ruby 1.9.3p194

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)

モデル(教室オブジェクトを更新していますが、写真はロケーションモデルにあります。(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 Toolsを再ダウンロードして再インストールしました(この問題は古いlibtoolに関連している可能性があると誰かが提案しました)。
  • コンピュータを再起動しました。
  • 以下を含むgemバージョンのバリエーションを試しました

    # 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"}

アップロードは機能しますが、スケーリングが必要です;-)

誰かが私が欠けているものを見ることができますか?

23
humbledaisy

私はこの問題を解決しました。 brewはCellar、/ usr/local/Cellarを呼び出すディレクトリを作成します。ImageMagickが2つない場合は、ImageMagick-Ruby182という名前が付いているので、brew uninstall ImageMagick-Ruby182と通常のimagemagickを実行すると、そしてイメージマジックを再インストールします。

1

この問題に遭遇したところ、ghostscriptがインストールされていなかったことが判明しました。私はスコットコーンウェルの助言を得て、エラーのサイレンシングを削除し、ゴーストスクリプトが利用できないために変換が失敗していると判断しました。

   brew install ghostscript 

私たちの問題を修正しました。

22
rwc9u

私のサーバーはLinuxを使用していますが、同じ問題が発生しました。私はテストするMacを持っていないので、それを行う方法を正確に伝えることはできませんが、うまくいけば、これはあなたを正しい方向に向けます。

これはImageMagick 6.8.5-5、Paperclip 3.4.2、コカインの最新バージョン、Rails 3.2.13:

Paperclip gemのgeometry_detector_factory.rbに移動し、identify呼び出しの周りの2行をコメント化しました:(この手順は必要ありません。問題を特定するために行ったことを説明しているだけです)

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

対応する「end」ステートメントとともに。これにより、「identify」コマンドを実行したときにコマンドラインでエラーを確認できました。

基本的にエラーは言った:「この画像形式のデコードデリゲートはありません」

あなたはおそらくそのエラーを調べてそれを理解することができますが、基本的に私がしたことはusr/local/binに移動して実行しました:(インストールしたものを見たいのでなければ、必要ありません) =

convert -list configure

dELEGATES行を探します。 ImageMagickが動作している別のLinuxサーバーがあり、2つを比較した後、新しいサーバーには2つのデリゲートしかインストールされていないことに気付きました。私は走ることができました:

yum install ImageMagick-devel

そして、make、make installでImageMagickを再コンパイルすると、問題なく動作しました。

また、ImageMagickサイトでデリゲートを手動で見つけて、1つずつインストールすることもできますが、そのライブラリでかなりカバーされていました。

ImageMagickをデバッグしますか?そのための時間は誰にもありません!

10
Scott Cornwell

Paperclip 3.5.2、コカイン0.5.3、ImageMagic 6.8.8を使用している私のウィンドウ開発環境で問題が発生しました。

解決策は追加することでした:

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

config/environment/development.rb

6

同様の問題がありましたが、古いPaperclip(3.0.2)です。

私の場合、私はそれを修正しました:

gem 'cocaine', '0.3.2'
3
tomaszbak

Libtool brew install libtoolを再インストールするとうまくいきました。

1
Edward Loveall

参考までに:

brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype
0
pablomarti

Image_magicに同じ問題があり、本番環境ではPaperclip機能を壊していましたが、開発中ではありませんでした(奇妙なことに、私は知っています)。しかし、gemfileとGemfile.lockからimagemagickをローカルに削除し(バンドルのインストールとそのすべてのものを実行)、herokuの本番環境にデプロイした後でも、エラーは本番環境に残りました! (奇妙なことです、私は知っています)。

トリックを実行することになったのは実行中でした:

$ heroku repo:purge_cache -a myAppName

(以下から取得: https://github.com/heroku/heroku-repo#purge_cache

アプリをデプロイすると、Herokuはデプロイを高速化するために、アセットやインストールされたgemなどをキャッシュします。これは優れた機能ですが、副作用が生じる場合があります。この場合、imagemagick gemの何かがプロダクションのキャッシュで「スタック」しているようです。そのため、パージによって問題が解決されました(パージ後、アプリは次のデプロイ時にゼロから再構築されます)

0
AmitF

ldconfigコマンド を使用して最新の共有ライブラリに必要なリンクとキャッシュを作成するように動的リンカーのランタイムバインディングを構成すると、同じ問題が発生し、解決しました。

したがって、次のコマンドを使用する必要があります。

Sudo ldconfig /usr/local/lib

実際、私は how-to-install-image-magick-and-setup-Paperclip の手順を使用してimagemagickを再インストールすることをお勧めします。

0
Mohamed Yakout

ImageMagickのアップグレードを試みたと既におっしゃっていましたが、同じ問題があり、ImageMagick 6.8.0-10 2013-03-03にアップグレードすると解決しました。

0
chrisgooley

Paperclip gemとcocaine gemのバージョンを更新してください。 Set Paperclip version:3.4.1 Set Cocaine version:0.5。

私は同じ問題に直面し、私の問題はすでにPaperclip gem github issuesにありました

0
kapiltekwani