0

我在rails 3中遇到回形针问题。当我上传文件时,我的处理器抛出错误,因为imagemagick get命令:

“复合-gravity South /home/xxx/xxx/public/images/watermark.png /tmp/a s20121207-5819-1dq7y81.jpg /tmp/a s20121207-5819-1dq7y8120121207-5819-1juqw7a”

复合:无法打开图像`/tmp/a':

处理器:

def make
  dst = Tempfile.new([@basename, @format].compact.join("."))
  dst.binmode

  if @watermark_path
    command = "composite"
    params = "-gravity #{@position} #{@watermark_path} #{fromfile} "
    params += tofile(dst)
    begin
      p " >>>>>>>>>>>>>>>>> #{command} #{params}"
      success = Paperclip.run(command, params)
    rescue PaperclipCommandLineError
      success = false
    end
    unless success
      raise PaperclipError, "There was an error processing the watermark for #{@basename}" if @whiny
    end
    return dst
  else
    return @file
  end
end

def fromfile
  File.expand_path(@file.path)
end

def tofile(destination)
  File.expand_path(destination.path)
end

它仅在文件名包含空格或其他非 alfanum 字符时发生。/tmp/a 应该是 /tmp/a b.jpg。

我试过http://www.davesouth.org/stories/make-url-friendly-filenames-in-paperclip-attachments等等,但处理器中的文件名仍然是错误的

有任何想法吗?或适用于这个问题的处理器?:(

4

2 回答 2

0

我今天回到了这个问题,发现你只需要像 ImageMagic 文档(http://www.imagemagick.org/script/command-line-processing.php)中那样用引号括起来路径:

If the image path includes one or more spaces, enclose the path in quotes:

'my title.jpg'

例如,在我的处理器中,我有:

command = "convert \"#{File.expand_path(@file.path)}\" -crop #{crop_area} -resize 150x150 \"#{File.expand_path(destination.path)}\""

Paperclip.run(command)

.

我现在在 Windows 上,单引号似乎不起作用。像您一样,我尝试更改 @file 的属性但没有成功。

希望能帮助到你。

于 2013-05-22T14:53:21.827 回答
0

尝试一下:

dst = Tempfile.new([@basename, @format].compact.join(".").gsub(" ","")
于 2012-12-07T20:46:17.537 回答