¿Cómo se valida el ancho y el alto de la imagen del adjunto_fu?
-
20-08-2019 - |
Pregunta
Quiero poder validar que la imagen sea exactamente cierta con o con cierta altura, o si es cuadrada.
En el bloque de validación del modelo que has_attachment
, cuando intento acceder a image_size
, width
o height
, siempre sale como nulo.
También hice la pregunta aquí si quieres más detalles.
Solución
Sí, necesitas hackear un poco para que funcione, pero no tanto. Adaptación del propio procesador de imagen del accesorio_fu:
validate :validate_image_size
private
def validate_image_size
w, h = width, height
unless w or h
with_image do |img|
w, h = img.columns, img.rows
end
end
errors.add(:width, "must less than 250px") if w > 250
errors.add(:height, "must less than 250px") if h > 250
end
end
Otros consejos
No ha especificado en qué idioma y sistema está trabajando.
Aún así, para la mayoría de los frameworks web, creo que la forma estándar de hacerlo usando imagen magia . Pruebe la función de identificación. .
¿Has echado un vistazo a la mini-magia?
Puedes clonarlo desde aquí:
http://github.com/probablycorey/mini_magick/tree/master
Si necesita aprender sobre git, consulte estos enlaces:
http://git.or.cz/course/svn.html (curso intensivo con git, en comparación con subversion)
http://github.com/guides/git-screencasts (github screencasts)
Es una envoltura de rubí alrededor de las funciones de imagemagick (no estoy seguro si attach_fu usa esto internamente), pero es absolutamente mejor que RMagick (RMagick está extremadamente hinchado, con muchos problemas de memoria). De todos modos, la mini-magia te permitirá hacer todo lo que necesites y algo más. Consulte el archivo README que figura en el enlace de github anterior y le dará un resumen de cómo usarlo.
Aquí hay un fragmento:
#For resizing an image
image = MiniMagick::Image.from_file("input.jpg")
image.resize "100x100"
image.write("output.jpg")
#For determining properties of an image...
image = MiniMagick::Image.from_file("input.jpg")
image[:width] # will get the width (you can also use :height and :format)
Creo que le faltan gemas de prerrequisitos que deben instalarse para usar attach_fu para cambiar el tamaño de la imagen. He trabajado con el complemento attach_fu que depende de las siguientes gemas
rmagick-2.11.0
-
image_science-1.2.0
Asegúrese de haber instalado las gemas anteriores y realice cambios en el ancho y la altura en has_attachment para poder ver los cambios.
¡Buena suerte!