Rails image_tag旋转图像

时间:2013-10-03 17:13:43

标签: ruby-on-rails amazon-s3 carrierwave fog

我正在使用亚马逊的S3进行图像存储,并配置了载波和雾。图像似乎正确存储,但是当我有一个“肖像”图像(宽度小于高度)时,它无法正确显示,而是在侧面旋转图像。

非常感谢任何正确方向的指针!

上传/ image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper

  storage :fog

  include CarrierWave::MimeTypes
  process :set_content_type

  process :resize_to_limit => [420, 0]

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(jpg jpeg png)
  end

end

show.html.haml

= image_tag(@idea.image_attachments.first.image.url).to_s

image_attachment.rb

class ImageAttachment < ActiveRecord::Base
  require 'carrierwave/orm/activerecord'
  attr_accessible :image, :description
  belongs_to :image_attachable, polymorphic: true
  mount_uploader :image, ImageUploader
end

2 个答案:

答案 0 :(得分:1)

在uploader.rb文件中,尝试

process :auto_orient 

def auto_orient
 manipulate! do |image|
   image.tap(&:auto_orient)
 end
end

它应该修复它。

答案 1 :(得分:0)

也许不是尝试resize_to_limit,而是创建一个您想要符合的版本。例如,如果你想让所有图片“智能地”缩小到正方形,你可以做这样的事情

从上传者中删除:

process :resize_to_limit => [420, 0]

添加到上传者:

版本:肖像做      过程:resize_to_fit =&gt; [100,100]    端

通过这种方式,carrierwave将存储原始图像,然后当您执行以下操作时也会响应您的呼叫:

@idea.image_url(:portrait)

这假设你的Idea模型已经安装了你的ImageUploader并且已经配置了所有其他必要的东西。