Rails 3 和 Paperclip:“'identify' 命令无法识别”
Posted
技术标签:
【中文标题】Rails 3 和 Paperclip:“\'identify\' 命令无法识别”【英文标题】:Rails 3 & Paperclip: "not recognized by the 'identify' command"Rails 3 和 Paperclip:“'identify' 命令无法识别” 【发布时间】:2011-10-20 09:21:30 【问题描述】:一些系统细节:
Mac OS X Lion 10.7.2、Rails 3、Paperclip gem。 ImageMagick 6.7.3-0,使用/opt/local/bin
中的 MacPorts 安装的二进制文件。
在开发环境中使用 WEBrick。
我正在尝试上传应该缩小为缩略图的照片。当我这样做时,原始上传的文件被保存并且可以通过 HTTP 正确访问。当我尝试访问缩略图版本时,我收到此错误:
Routing Error
No route matches "[file_URL]"
在此之前,当上传有效的 PNG 文件时,我在 WEBrick 日志中看到此错误:
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /var/folders/n4/62q22gb52rjd0h13cx_j8vv40000gq/T/stream20111020-24984-17560xt-0.png is not recognized by the 'identify' command.>
做which identify
输出:
/opt/local/bin/identify
使用上传文件的路径调用identify
,将文件正确识别为PNG文件。
我确认rails server
启动开发环境。我在config/environments/development.rb
中添加了以下内容:
Paperclip.options[:command_path] = "/opt/local/bin"
我的照片模型有以下内容:
class Photo < ActiveRecord::Base
has_attached_file :file, :default_style => :view, :styles =>
:view => :geometry => '520x390>', :format => 'jpg' ,
:preview => :geometry => '160x120>', :format => 'jpg'
validates_attachment_content_type :file,
:content_type => [ 'image/jpeg', 'image/pjpeg', 'image/png' ]
end
我的照片控制器:
class PhotosController < ApplicationController
# ...
def create
@photo = Photo.create params[:photo]
end
end
就像我说的,我可以访问 URL 路径 system/files/:id/original
中的原始图像,但是我想要的调整大小的版本无法访问,并且在文件系统中找不到。 WEBrick 的日志表明 Paperclip 甚至无法让 ImageMagick 在调整图像大小之前对其进行识别。
有什么想法吗?提前致谢!
【问题讨论】:
当文件最初上传并且回形针尝试处理它时会出现问题(NotIdentifiedByImageMagickError
)。这个问题可能是重复的:***.com/questions/1623948/…
【参考方案1】:
如上所述,这可能是一个重复的问题,但这个问题是由 ImageMagick 6.7.3-0 中最近在 6.7.3-1 中修复的错误引起的。 MacPorts 也已更新为新版本。
在 6.7.3-0 中,在文件路径中声明帧号(例如 identify /path/to/file.png[0]
)导致 ImageMagick 出现段错误(“Segmentation fault 11”)。 Paperclip 指定帧号以确保其处理图像文件的第一帧或第一页。
ImageMagick 的新版本解决了这个问题。 MacPorts 上提到了这个错误:
https://trac.macports.org/ticket/31643
【讨论】:
以上是关于Rails 3 和 Paperclip:“'identify' 命令无法识别”的主要内容,如果未能解决你的问题,请参考以下文章
Rails 6,Paperclip,S3,s3_direct_upload @attachment.save 在 s3_direct_upload 完成后不保存