Ruby on rails Rails 3/回形针:如何将路径提取为字符串进行图像处理?(不是ImageMagick!)

Ruby on rails Rails 3/回形针:如何将路径提取为字符串进行图像处理?(不是ImageMagick!),ruby-on-rails,ruby,image-processing,paperclip,Ruby On Rails,Ruby,Image Processing,Paperclip,我正在运行一个web应用程序,通过回形针上传图像,然后在opencv支持的ruby扩展gem中对其执行图像处理,这需要一个字符串路径来运行。我使用的代码如下: imageFiles # => Array of ActiveRecord objects with attached paperclip files ('image') filenames = Array.new() imageFiles.each{ |imFile| filenames.push( imFile.imag

我正在运行一个web应用程序,通过回形针上传图像,然后在opencv支持的ruby扩展gem中对其执行图像处理,这需要一个字符串路径来运行。我使用的代码如下:

imageFiles # => Array of ActiveRecord objects with attached paperclip files ('image')
filenames = Array.new()
imageFiles.each{ |imFile|
    filenames.push( imFile.image.path )
}
imgproc = ImageProcessor.new # => extension
imgproc.process( filenames )
这给了我以下错误:

can't convert Paperclip::Attachment into String
如果我推:

imFile.image.file_name
相反,我的错误变成:

undefined method `file_name' for /xxx/xxx/xxx/000/000/062/original/img.jpg?1340296339:Paperclip::Attachment

我走的是正确的道路,还是我错过了一步?提前谢谢

我不知道opencv backed是如何工作的,但您可以尝试只推送图像对象

filenames.push( imFile.image )

事实证明,早些时候我将一个图像放入文件名数组而不是文件本身,这是类型化语言的危险之一

我在发送文件时也遇到了同样的错误。在我的例子中,我只需将对象转换为字符串

    file = @my_object.my_document
    path = open(file.to_s)
    send_file(path,
       :type => "application/pdf",
       :disposition => 'inline', :filename => "My File")

OpenCV采用带路径或不带路径的字符串文件名,只要可以找到,并且执行imFile.image会导致上面的“无法转换”错误。我记得有同样的问题,我会检查它,但我这里没有我的环境。是否设置了所有配置参数?尝试直接访问项目的“path”属性,如read_属性:pathI可以访问路径。我甚至尝试提取文件名,使用FileUtil制作副本,并删除原始文件。还是给了我同样的错误。我认为你没有正确地使用回形针上的一些错误配置的路径,但仍然不知道。我假设ImageProcessor.process需要资产的路径,对吗?检查imFile.image.path.class是什么,因为它正在返回附件。尝试imFile.image.path:默认值。执行imFile.image.to_也应该返回路径的字符串。我确实尝试了所有这些。不管怎样,它还是看到了依恋。事实上,我放弃了回形针,现在我正与卡里尔瓦夫合作。