Rails carrierwave 和 minimagick 只允许横向图像
Rails carrierwave and minimagick allow landscape image only
是否可以在图片上传时验证图片方向?
我希望该用户只能上传横向图片。
谢谢
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
所以您在这里只需要图像的 EXIF 元数据。我看到一个 gem 可以帮助我们从上传的图像中获取元数据,在这种情况下它似乎可以帮助你
https://github.com/gzigzigzeo/carrierwave-meta
基本上,我们可以获得 image_size 的大小,然后创建一个依赖于它的验证。
是否可以在图片上传时验证图片方向? 我希望该用户只能上传横向图片。
谢谢
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
所以您在这里只需要图像的 EXIF 元数据。我看到一个 gem 可以帮助我们从上传的图像中获取元数据,在这种情况下它似乎可以帮助你
https://github.com/gzigzigzeo/carrierwave-meta
基本上,我们可以获得 image_size 的大小,然后创建一个依赖于它的验证。