轨carrierwave和minimagick只允许景观形象

问题描述 投票:0回答:2

它是方法来验证图像上传图像方向?我希望该用户只能上传景观形象。

谢谢

ruby-on-rails carrierwave minimagick
2个回答
1
投票
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

1
投票

因此,所有你所需要的是图像的EXIF元数据。我看到了一个宝石,可以帮助我们从我们上传的图像获取元数据,好像它可以帮助你在这种情况下,

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

基本上,我们可以得到IMAGE_SIZE的大小,然后创建一个验证依赖它。

© www.soinside.com 2019 - 2024. All rights reserved.