CarrierWave는 ActiveRecord를 사용하여 이미지를 업로드 할 때 이미지의 크기를 조정하는 작업을하고 있습니다. 그러나 처리중인 ActiveRecord 모델에서 이미지가 가로 또는 세로인지 여부를 기록 할 수 있습니까?CarrierWave 모델을 업데이트 하시겠습니까?
0
A
답변
1
을 README에서, 당신은 사진의 방향을 확인하려면 다음 사용할 수 있습니다
def landscape?(picture)
image = MiniMagick::Image.open(picture.path)
image[:width] > image[:height]
end
당신은이를 사용할 수를 귀하의 모델에 before_save
(예 : CarrierWave 위키에있는 this example)을 약간 수정했습니다 :
class Asset < ActiveRecord::Base
mount_uploader :asset, AssetUploader
before_save :update_asset_attributes
private
def update_asset_attributes
if asset.present? && asset_changed?
self.landscape = landscape?(asset)
end
end
def landscape?(picture) # ... as above ...
end
업데이트 : 업 로더에서이를 수행하려면 최선의 방법이 확실하지 않습니다. 하나의 옵션은 사용자 지정 처리 방법을 쓸 수도 :
사실을 이용한다class AssetUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process :resize => [200, 200]
private
def resize(width, height)
resize_to_limit(width, height) do |image|
model.landscape = image[:width] > image[:height]
image
end
end
end
그 MiniMagick 방법 yield
추가 처리를위한 화상 이미지를 두 번 로딩 피하도록.
1
당신은 당신의 업 로더 파일에이 방법을 추가 할 수 있습니다
include CarrierWave::RMagick
def landscape? picture
if @file
img = ::Magick::Image::read(@file.file).first
img.columns > img.rows
end
end
관련 문제
- 1. 컨트롤러에서 모델을 업데이트 하시겠습니까?
- 2. Ember.js보기가 변경되면 모델을 업데이트 하시겠습니까?
- 3. 매분 자동으로 모델을 업데이트 하시겠습니까?
- 4. 키 누르기에서만 AngularJS 모델을 업데이트 하시겠습니까?
- 5. 모델을 각도 2의 지시에서 업데이트 하시겠습니까?
- 6. ASP.NET MVC 2에서 복잡한 모델을 업데이트 하시겠습니까?
- 7. ActiveRecord 모델을 저장하면 CarrierWave 이미지 버전이 삭제됩니다.
- 8. Carrierwave, Sequel, Sinatra, import throught irb, 업데이트
- 9. Cloudfront + Carrierwave
- 10. 다른 모델을 업데이트
- 11. id를 전달하지 않고 다른 컨트롤러에서 모델을 업데이트 하시겠습니까?
- 12. ASP.NET MVC : 모델 내에서 모델을 업데이트 하시겠습니까? 컨트롤러에서
- 13. 내 모델을 업데이트 한 다음 IsValid를 다시 평가 하시겠습니까?
- 14. 레일 버전에서 부모 모델을 가져 오는 중 Carrierwave
- 15. 새 모델을 추가하거나 기존 모델을 확장 하시겠습니까?
- 16. 모델을 리소스로 사용 하시겠습니까?
- 17. 컨트롤러에서 모델을 지정 하시겠습니까?
- 18. Ext.data.Store 모델을 다시로드 하시겠습니까?
- 19. 보기 모델을 교체 하시겠습니까?
- 20. 모델을 통해 검색 하시겠습니까?
- 21. 모델 업데이트 중 CarrierWave 모듈의 모델 속성에 액세스
- 22. 는 CarrierWave .. .. 파일을 열
- 23. 레일에서 모델을 다른 모델로 업데이트
- 24. CarrierWave 내가 CarrierWave 업 로더와 모델이
- 25. Carrierwave 프로그래밍 방식 업로드
- 26. Carrierwave extension_white_list
- 27. Carrierwave + Heroku
- 28. Carrierwave - default_url 문제가있는 다형성
- 29. django에서 이상한 모델을 설정 하시겠습니까?
- 30. Rails 모델을 데이터베이스보기에 연결 하시겠습니까?
나는이 사진을 찍었습니다. 작동하지만, 이미지를 두 번로드해야합니다. 한 번 크기를 변경하고 한 번 너비와 높이를 찾으십시오. 메모리를 제대로 사용하지 않는 것처럼 보입니다! 모델 내부가 아닌 업 로더 내에서이 정보를 얻을 수 있습니까? –
네, 확실히 가능합니다. 내 대답에 가능한 접근법을 추가했습니다. –
awe- * 더 많은 문자를 써야합니다. * -some –