缩放图像时,PaperClip错误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包含适当的路径(我已经validation使用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  {: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"} 

上传工作,但我需要缩放;-)

谁能看到我失踪的东西?

我刚刚解决了这个问题。 brew进行目录调用Cellar,/ usr / local / Cellarvalidation你是否有两个ImageMagick,我有一个名为ImageMagick-Ruby182,所以,如果你有它运行brew卸载ImageMagick-Ruby182,还有正常的imagemagick,并重新安装图像魔术。

我们遇到了这个问题,结果发现这是一个没有安装ghostscript的问题。 我接受了Scott Cornwell的建议并删除了错误的沉默,然后确定转换失败,因为ghostscript不可用。

  brew install ghostscript 

修复了我们的问题。

虽然我的服务器在Linux上,但我遇到了同样的问题。 不能告诉你究竟该怎么做,因为我没有Mac测试,但希望这能指出你正确的方向。

这对我有用ImageMagick 6.8.5-5,Paperclip 3.4.2,最新版本的可卡因,Rails 3.2.13:

我进入了Paperclip gem中的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 

并寻找DELEGATES线。 我有另一台运行ImageMagick的Linux服务器,在比较两者后,我意识到新服务器只安装了2个代理。 我能够跑:

 yum install ImageMagick-devel 

然后使用make,make install重新编译ImageMagick并且它工作正常。

您也可以在ImageMagick网站上手动找到代理并逐个安装,但该库几乎涵盖了它。

调试ImageMagick? 是不是没有人有时间!

如果我的窗口环境问题,使用paperclip 3.5.2,可卡因0.5.3和ImageMagic 6.8.8。

解决方案是添加:

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

to config / environment / development.rb

我有类似的问题,但旧的PaperClip(3.0.2)。

在我的情况下,我修复它:

 gem 'cocaine', '0.3.2' 

重新安装libtool brew install libtool对我brew install libtool

请更新回形针gem和可卡因gem的版本。 设置PaperClip版本:3.4.1设置可卡因版本:0.5。

我遇到了同样的问题,我的问题已经存在于paperclip gem github问题中

您已经提到过您尝试升级ImageMagick,但我遇到了同样的问题并升级到ImageMagick 6.8.0-10 2013-03-03为我修复了它。

与image_magic有同样的问题,它在生产中打破了我的回形针function,但没有在开发中(很奇怪,我知道)。 即使从我们的gemfile和Gemfile.lock本地删除imagemagick(运行bundle install和所有这些东西)然后在heroku上部署回生产,错误仍然存​​在于生产中! (很奇怪,我知道)。

最终做的诀窍是运行:

 $ heroku repo:purge_cache -a myAppName 

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

在部署应用程序时,Heroku会缓存一些内容,例如资产和已安装的gem,以加快部署速度。 虽然这是一个很棒的function,但它有时会产生副作用,在这种情况下,似乎有关于imagemagick gem的东西被“卡住”在生产缓存中,这就是为什么清除为我们解决了问题(因为在清除之后,您的应用将在下次部署时从头开始重建)

我有同样的问题,当我配置动态链接器运行时绑定以使用ldconfig命令创建必要的链接并缓存到最新的共享库时,我解决了它。

所以你需要使用以下命令:

 sudo ldconfig /usr/local/lib 

实际上,我建议使用how-to-install-image-magick-and-setup-paperclip中的步骤重新安装imagemagick。

仅供记录:

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