如何将其他转换选项传递给Heroku上的回形针?

时间:2010-03-17 18:56:04

标签: ruby-on-rails heroku paperclip

class User < ActiveRecord::Base

  has_attached_file :photo, :styles => { :square => "100%", :large => "100%" },
    :convert_options => {
      :square => "-auto-orient -geometry 70X70#",
      :large => "-auto-orient -geometry X300" },
    :storage  => :s3,
    :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
    :path => ":attachment/:id/:style.:extension",
    :bucket => 'mybucket'

  validates_attachment_size :photo,
    :less_than => 5.megabyte

end

在本地计算机上运行良好,但在Heroku上给我一个错误:There was an error processing the thumbnail for stream.20143 问题是我想在调整大小之前自动定位照片,所以他们正确调整了大小。

现在唯一的工作变体(感谢jonnii)正在调整大小而没有自动定位:

...
as_attached_file :photo, :styles => { :square => "70X70#", :large => "X300" },
        :storage  => :s3,
        :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
        :path => ":attachment/:id/:style.:extension",
        :bucket => 'mybucket'
...

如何将其他转换选项传递给Heroku上的回形针?

UPD

我发现了“-auto-orient”选项中的麻烦。似乎这个选项在Heroku使用的ImageMagick版本中被破坏了。我创建了自定义回形针图像处理器,继承自回形针的标准缩略图:

module Paperclip

  class Ao < Thumbnail

    def transformation_command
      super + " -auto-orient"
    end

   end
end

它在本地机器上运行良好,但在Heroku上失败。

1 个答案:

答案 0 :(得分:2)

这些是我使用的尺寸。他们在heroku上工作正常:

SIZES = {
  :original => "640x480>",
  :thumb => "150x150#",
  :mini => "60x60#",
  :micro => "30x30#"
}

确保回形针的宝石版与heroku相同。您可以在.gems文件和environment.rb中指定特定的gem版本,以确保它们排成一行。

我不确定你convert_options导致问题的确切原因,但如果我没记错,paperclip会直接使用ImageScience,而您选择的选项可能与只读的heroku文件系统不兼容。

如果这很关键,你现在需要回答我会在heroku上提出支持票。如果您收到回复,请务必将其发回此处!