[RUBY-ON-RAILS] 이미지 회전 문제 EXIF S3에 업로드 carrierwave 및 rmagick를 사용하여
RUBY-ON-RAILS이미지 회전 문제 EXIF S3에 업로드 carrierwave 및 rmagick를 사용하여
내 레일 응용 프로그램에서 사진 업로드 기능을 가지고있다. 이 앱의 업로드 rmagick 안개를 통해 carrierwave를 통해 S3에 직접. 오전 데 문제는 사진을 통해 모바일을 통해 업로드 할 때입니다 세로 (주이 아이폰으로하지만 내가 믿는 안드로이드 같은 문제가) "사진 옵션을". 이미지가 바탕 화면에서 볼 그러나 때, 모바일에서 잘 나타납니다 업로드하면 이미지가 나타납니다 90도 회전.
내 연구를 통해이 EXIF의 문제로 보인다. 이 유래 응답자는 2 개 잠재적 인 솔루션을 설명합니다. 이 요점은 또한뿐만 아니라 유망 보인다.
지금까지 나는 몇 가지 솔루션을 게시 발견했지만 아무도 일하지했다. 이상적으로는 그대로 그럼 그냥 이미지를 표시, 사진은 세로로 S3에 저장하고 싶습니다.
모든 제안을 잘 부탁드립니다.
다음은 내 코드입니다
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWaveDirect::Uploader
include CarrierWave::RMagick
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper
include CarrierWave::MimeTypes
process :fix_exif_rotation
process :set_content_type
version :thumb do
process resize_to_fill: [200, 200]
end
def extension_white_list
%w(jpg jpeg png)
end
def fix_exif_rotation #this is my attempted solution
manipulate! do |img|
img = img.auto_orient!
end
end
end
class S3Image < ActiveRecord::Base
attr_accessible :image, :name, :user_id
mount_uploader :image, ImageUploader
belongs_to :user
def image_name
File.basename(image.path || image.filename) if image
end
class ImageWorker
include Sidekiq::Worker
def perform(id, key)
s3_image = S3Image.find(id)
s3_image.key = key
s3_image.remote_image_url = s3_image.image.direct_fog_url(with_path: true)
s3_image.save!
s3_image.update_column(:image_processed, true)
end
end
end
CarrierWave.configure do |config|
config.fog_credentials = {
provider: "AWS",
aws_access_key_id: " ... ",
aws_secret_access_key: " ... "
}
config.fog_directory = " ... "
end
BTW 내 S3 업로드 설정을위한 가이드로이 Railscast을 사용했다.
해결법
-
==============================
1.그럼 내가 대신 또는 carrierwave_direct 안개를 사용하여이 작업을 얻었다.
그럼 내가 대신 또는 carrierwave_direct 안개를 사용하여이 작업을 얻었다.
다음은 나를 위해 일하는 결국 코드입니다 :
응용 프로그램 / 업 로더 / image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick include Sprockets::Helpers::RailsHelper include Sprockets::Helpers::IsolatedHelper storage :fog # Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def fix_exif_rotation #this is my attempted solution manipulate! do |img| img.tap(&:auto_orient) end end process :fix_exif_rotation end
응용 프로그램 / 모델 / s3_image.rb
class S3Image < ActiveRecord::Base attr_accessible :image, :name, :user_id, :image_cache mount_uploader :image, ImageUploader belongs_to :user end
초기화 / carrierwave.rb
CarrierWave.configure do |config| config.fog_credentials = { provider: "AWS", aws_access_key_id: " ... ", aws_secret_access_key: " ... ", region: 'us-west-2' } config.fog_directory = " ... " end
-
==============================
2.나는 비슷한 문제를 가지고 있었고, 당신과 거의 동일한 접근 방식으로 고정.
나는 비슷한 문제를 가지고 있었고, 당신과 거의 동일한 접근 방식으로 고정.
# In the uploader: def auto_orient manipulate! do |img| img = img.auto_orient end end
(주 나는 auto_orient를 호출하지 오전! - 단지 auto_orient을 강타없이.)
내가 만드는 모든 버전의 첫 번째 줄과 같은 auto_orient : 그럼 난 과정이있다. 예를 들면 :
version :square do process :auto_orient process :resize_to_fill => [600, 600] end
-
==============================
3.(Sumeet 매우 유사) 내 솔루션 :
(Sumeet 매우 유사) 내 솔루션 :
# painting_uploader.rb process :right_orientation def right_orientation manipulate! do |img| img.auto_orient img end end
그것은 이미지를 반환 정말 중요합니다. 그렇지 않으면, 당신은 얻을 것이다
NoMethodError (undefined method `write' for "":String):
-
==============================
4.Lando2319의 대답은 나를 위해 작동하지 않았다.
Lando2319의 대답은 나를 위해 작동하지 않았다.
나는 RMagick을 사용하고 있습니다.
나는 ImageMagick이 올바른 방향을 적용 (뷰어로 이중 회전을 방지하기 위해 EXIF 회전 데이터를 재설정)을 사용하여 만들어 관리 :
def fix_exif_rotation # put this before any other process in the Carrierwave uploader manipulate! do |img| img.tap(&:auto_orient!) end
내 솔루션 및 랜도의 차이는 뱅이다 (!). 내 경우에는 그것은 절대적으로 필요했다.
from https://stackoverflow.com/questions/18519160/exif-image-rotation-issue-using-carrierwave-and-rmagick-to-upload-to-s3 by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 말대꾸 :: 구문 에러 : 수입에 파일이 없거나 읽을 수 : 부트 스트랩 - 스프로킷 (0) | 2020.02.19 |
---|---|
[RUBY-ON-RAILS] 어디 레일에서 글로벌 변수를 넣어 3 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 레일 응용 프로그램 아이콘 추가 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 방문 방법은 내 RSpec에에서 찾을 수 없습니다 (0) | 2020.02.19 |
[RUBY-ON-RAILS] LINK_TO : 확인 표시를 두 번 팝업 (0) | 2020.02.19 |