3

キャリアウェーブとフォグが設定された画像ストレージに Amazon の 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
4

2 に答える 2

1

uploader.rb ファイルで、試してください

process :auto_orient 

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

それはそれを修正する必要があります。

于 2016-02-29T17:11:17.520 に答える
0

おそらく、resize_to_limit を試みる代わりに、準拠したいバージョンを作成してください。たとえば、すべての画像を「インテリジェントに」正方形に縮小したい場合は、次のようにすることができます

アップローダから削除:

process :resize_to_limit => [420, 0]

アップローダに追加:

version :portrait do process :resize_to_fit => [100, 100] end

このようにして、carrierwave は元の画像を保存し、次のような操作を行ったときに呼び出しにも応答します。

@idea.image_url(:portrait)

これは、Idea モデルが ImageUploader をマウントし、他のすべての必要なものが既に構成されていることを前提としています。

于 2013-10-03T17:45:44.117 に答える