3
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 上失败。

4

1 回答 1

2

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

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

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

我不确定你到底为什么convert_options会导致问题,但如果我没记错的话,回形针直接使用 ImageScience,你选择的选项可能与只读 heroku 文件系统不兼容。

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

于 2010-03-17T19:35:53.293 回答