我正在使用亚马逊的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
答案 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并且已经配置了所有其他必要的东西。