一些系统细节:
/opt/local/bin
中的MacPorts安装二进制文件。我正在尝试将应调整大小的照片上传到缩略图中。当我这样做时,原始上传的文件被保存并可以通过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在调整图像大小之前甚至无法识别图像。
有什么想法吗?提前谢谢!
答案 0 :(得分:0)
这可能是一个重复的问题,如上所述,但这个问题是由于最近在6.7.3-1中修复的ImageMagick 6.7.3-0中的一个错误引起的。 MacPorts也已在新版本中更新。
在6.7.3-0中,说明文件路径中的帧编号(例如identify /path/to/file.png[0]
)导致ImageMagick发生段错误(“Segmentation fault 11”)。 Paperclip指定帧编号以确保其处理图像文件的第一帧或页面。
ImageMagick的新版本解决了这个问题。 MacPorts上提到了这个bug: