Rails回形针和颠倒的图像

Ton*_*ate 12 paperclip orientation ruby-on-rails-3

我最近遇到了一个问题,用户上传了一个图像,并且在某处某处,回形针正在翻转它.

有问题的图片可以在http://photoramblr.com/photos/36看到

如你所见,图像是颠倒的; 但是将图像拖到桌面上它会出现在正确的位置.由于此图像是在iPhone上拍摄的,因此我只能假设这与iPhone上图像的方向设置有关.有没有人遇到这样的事情或有任何建议如何解决这个问题?

这里的代码是非常简单的Paperclip术语:

class Photo < ActiveRecord::Base
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :styles => {
      :thumb => "100x100#",
      :small => "138x138>",
      :large => "580x580>",
      :x_large => "1600x1600>"}
Run Code Online (Sandbox Code Playgroud)

更新

嗯,我能够通过拍摄图像的截图并上传它来解决这个问题.元数据中肯定有一些东西正在设置正确的方向,而这些方向并未完成.

Mic*_*ley 11

是的,这是我们上周解决的问题.:)如果您使用ImageMagick/RMagic进行图像处理,您可以使用Image#auto_orient"根据图像的EXIF方向标记旋转或翻转图像" ; 在Paperclip处理器的图像上调用此方法,你应该很高兴.

[编辑]

您可能对Rails,Paperclip,-auto-orient和resizing ...感兴趣.我还发现有趣的是CarrierWave使这个过程非常简单:

class ImageUploader < CarrierWave::Uploader::Base
  ... # config here

  process :rotate

  def rotate
    manipulate! do |image|
      image.auto_orient
    end
  end
end
Run Code Online (Sandbox Code Playgroud)


Jos*_*ter 5

源文件选项

Paperclip添加了一个source_file_options允许您传递直接应用于源文件的处理器选项,然后生成后续缩略图和样式.

您可以添加此选项以自动定位源文件,如下所示:

class Photo < ActiveRecord::Base
  has_attached_file :image,
    storage:             :s3,
    s3_credentials:      S3_CREDENTIALS,
    source_file_options: { all:     '-auto-orient' },
    styles:              { thumb:   "100x100#",
                           small:   "138x138>",
                           large:   "580x580>",
                           x_large: "1600x1600>" }
Run Code Online (Sandbox Code Playgroud)

这应该是从gem 2.3.16版开始提供的.

有关更多信息,请参阅Paperclip的Github存储库中的以下问题:

https://github.com/thoughtbot/paperclip/issues/591

原创风格

设置original样式以创建自动定向和大小限制版本也不是一个糟糕的主意,如下所示:

original: "5000x5000>"
Run Code Online (Sandbox Code Playgroud)

注意:但是,如果您希望上传不仅仅是图像(如PDF),则会因不保留原始PDF而只存储PDF第一页的图像而导致问题.