2016-09-21 1 views
0

Я использую carrierwave как драгоценный камень для загрузки изображений в проект Rails, он отлично работает на всех устройствах, кроме Android, всякий раз, когда я загружаю изображение с устройства Android, он поворачивается на 90 градусов.Изображение автоматически поворачивается при загрузке в Rails

Эти драгоценные камни используются для загрузки изображения:

gem 'rmagick' 
gem 'carrierwave' 

А вот код из avatar_uploader.rb

# encoding: utf-8 

class AvatarUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    include CarrierWave::RMagick 
    # include CarrierWave::MiniMagick 

    # Choose what kind of storage to use for this uploader: 
    storage :file 
    # storage :fog 

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

    version :thumb, :if => :image? do 
    process :crop 
    resize_to_fill(100, 100) 
    end 

    version :large, :if => :image? do 
    resize_to_limit(600, 600) 
    end 

    def crop 
    if model.crop_x.present? 
     resize_to_limit(600, 600) 
     manipulate! do |img| 
     x = model.crop_x.to_i 
     y = model.crop_y.to_i 
     w = model.crop_w.to_i 
     h = model.crop_h.to_i 
     img.crop!(x, y, w, h) 
     end 
    end 
    end 

    protected 

    def image?(new_file) 
     new_file.content_type.include? 'image' 
    end 

end 

ответ

0

Наконец я получил решение здесь https://stackoverflow.com/a/18541893,

здесь изменения я сделал, чтобы исправить это:

добавили это в avatar_uploader.rb:

def auto_orient 
    manipulate! do |img| 
     img = img.auto_orient 
    end 
end 

и использовали его как:

version :thumb, :if => :image? do 
    process :auto_orient  // here it is used 
    process :crop 
    resize_to_fill(100, 100) 
    end 

    version :large, :if => :image? do 
    process :auto_orient  // here it is used 
    resize_to_limit(600, 600) 
    end 

Вот это :)

Смежные вопросы