Rails carrierwave и minimagick допускают только ландшафтное изображение - PullRequest
0 голосов
/ 02 февраля 2019

Это способ проверить ориентацию изображения при загрузке изображения?Я хочу, чтобы этот пользователь мог загружать только ландшафтные изображения.

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Итак, все, что вам нужно, это метаданные EXIF ​​изображения.Я видел драгоценный камень, который помогает нам получать метаданные из загруженного нами изображения, похоже, он может помочь вам в этом случае

https://github.com/gzigzigzeo/carrierwave-meta

По сути, мы можем получить размер image_sizeзатем создайте проверку, опираясь на нее.

0 голосов
/ 02 февраля 2019
mount_uploader :photo, PhotoUploader

validate :check_landscape

def check_landscape
  if photo.width<photo.height
     errors.add :photo, "is not a landscape." 
     puts "Error ! not a Landscape Image"
  else if photo.width>photo.height
     puts " Landscape Image"
  end
  end
end

, если вы ищете active_storage has_many_attached

has_many_attached :images


validate: active_storage_many_images

 def active_storage_many_images
    images.each do |image|

    image.blob.analyze unless image.blob.analyzed?
    width = image.blob.metadata[:width]
    height = image.blob.metadata[:height]

    if width<height
      errors.add :image, "Additional images are not landscape"
      puts "ACTIVE STORAGE IMAGE ERROR !!"
    end
  end
 end
...