Ruby on rails 缩放图像时,ImageMagickeror无法识别回形针错误
好几天来我一直在用头撞这个。最近,我的图像上传已经停止正常工作。我已经调查了几种可能性,但没有一种建议的解决方案在我的案例中起作用 错误消息是:Ruby on rails 缩放图像时,ImageMagickeror无法识别回形针错误,ruby-on-rails,imagemagick,paperclip,Ruby On Rails,Imagemagick,Paperclip,好几天来我一直在用头撞这个。最近,我的图像上传已经停止正常工作。我已经调查了几种可能性,但没有一种建议的解决方案在我的案例中起作用 错误消息是: #<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError> Gemfile.lock(相关部分) 模型(我正在更新教室对象,但图片位于位置模型中。(教室有一个:位置,:as=>:locat
#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError>
Gemfile.lock
(相关部分)
模型(我正在更新教室对象,但图片位于位置模型中。(教室有一个:位置,: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
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的命令行工具(有人建议该问题可能与过时的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"}
上传工作正常,但我需要缩放;-)
有人能看到我丢失的东西吗?请更新回形针宝石和可卡因宝石的版本。 设置回形针版本:3.4.1 设置可卡因版本:0.5
我也遇到了同样的问题,我的问题已经出现在回形针gem github问题中了我也有类似的问题,但回形针(3.0.2)比较旧 在我的情况下,我用以下方法修复了它:
gem 'cocaine', '0.3.2'
您已经提到您尝试升级ImageMagick,但我遇到了同样的问题,升级到
ImageMagick 6.8.0-10 2013-03-03
为我解决了这个问题。我也遇到了同样的问题,尽管我的服务器在Linux上。我不能告诉你具体怎么做,因为我没有Mac电脑要测试,但希望这能为你指明正确的方向
这在ImageMagick 6.8.5-5、回形针3.4.2、可卡因最新版本、Rails 3.2.13中对我有效:
我进入了回形针gem中的geometry_detector_factory.rb,并注释掉了标识调用周围的两行:(这一步不是必需的,只是解释了我是如何确定问题的)
以及相应的“结束”语句。这使我能够在运行“identify”命令时看到命令行上的错误
基本上错误是:“此图像格式没有解码委托”
您可能可以查找该错误并将其解决,但基本上我所做的是转到usr/local/bin并运行:(也没有必要,除非您想查看已安装的内容)
并寻找代表行。我有另一台Linux服务器,ImageMagick在那里工作,在比较了这两台服务器之后,我意识到新的服务器只安装了2个代理。我能跑:
yum install ImageMagick-devel
然后用make,make-install重新编译ImageMagick,它就工作了
您也可以在ImageMagick站点上手动找到代理并逐个安装,但该库对我来说几乎涵盖了这一点
调试ImageMagick?没人有时间 我们刚刚遇到了这个问题,结果是没有安装ghostscript。我听取了Scott Cornwell的建议,取消了错误沉默,然后确定转换失败,因为ghostscript不可用
brew install ghostscript
为我们解决了这个问题。重新安装libtool
brew安装libtool
对我来说是可行的。在我的Windows开发环境中,使用回形针3.5.2、可卡因0.5.3和ImageMagic 6.8.8时出现了问题
解决办法是增加:
Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'
配置/environment/development.rb与image\u magic有相同的问题,它破坏了我们在生产中的回形针功能,但在开发中没有(我知道这很奇怪)。 然而,即使在本地从gemfile和gemfile.lock中删除imagemagick(运行bundle install和所有这些东西),然后在heroku上部署回生产环境之后,错误仍然存在于生产环境中!(奇怪,我知道) 最后做这个把戏的是跑步:
$ heroku repo:purge_cache -a myAppName
(摘自:)
部署应用程序时,Heroku会缓存一些东西,如您的资产和已安装的gems,以加快部署速度。
虽然这是一个很好的功能,但有时可能会产生副作用,在这种情况下,imagemagick gem的某些内容似乎“卡在”生产缓存中,这就是为什么清除为我们解决了问题(因为清除后,您的应用程序将在下次部署时从头开始重建)我也有同样的问题,当我配置动态链接器运行时绑定来创建必要的链接并缓存到最近使用的共享库时,我解决了这个问题 因此,您需要使用以下命令:
sudo ldconfig /usr/local/lib
实际上,我建议使用。中的步骤重新安装imagemagick,只是为了记录:
brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype
我刚刚解决了这个问题。
brew进行目录调用Cell,/usr/local/Cell
验证您是否没有两个ImageMagick,我有一个名为ImageMagick-Ruby182,因此,如果您让它运行brew,请卸载ImageMagick-Ruby182,以及正常的ImageMagick,然后重新安装image magic。版本已经是3.4.1,可卡因是0.5.0(如上面列出的Gemfile.lock所示)。谢谢!在我的客户机上工作。(我最终使用了mac端口,这是我不愿意做的,但我花了太多时间调试它。)我遵循的说明如下()。我还必须改变我的开发环境,使之指向曲别针同样的问题在这里,仍然没有找到解决办法这正是我的问题的原因-我用回形针上传和缩略PDF。没有安装Ghostscript导致了悲伤。很好,这解决了我的问题!我只是想上传一个pdf文件,而不是在上面做缩略图或任何操作。除非回形针试图在没有明确请求的情况下从pdf中为您创建缩略图,否则错误消息有点误导。
Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'
$ heroku repo:purge_cache -a myAppName
sudo ldconfig /usr/local/lib
brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype