Come si convalida la larghezza e l'altezza dell'immagine di attachment_fu?
-
20-08-2019 - |
Domanda
Voglio essere in grado di convalidare l'immagine esattamente con una certa altezza, o se è quadrata.
Nel blocco di convalida del modello che has_attachment
, quando provo ad accedere a image_size
, width
o height
, viene sempre visualizzato come nullo.
Ho anche posto la domanda qui se vuoi maggiori dettagli.
Soluzione
Sì, devi hackerare un po 'per farlo funzionare, ma non così tanto. Adattamento dall'elaboratore di immagini di attachment_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
Altri suggerimenti
Non hai specificato la lingua e il sistema su cui stai lavorando.
Tuttavia, per la maggior parte dei framework Web, penso che il modo standard per farlo utilizzando image magia. Prova la funzione di identificazione. .
Hai dato un'occhiata a mini-magick?
Puoi clonarlo da qui:
http://github.com/probablycorey/mini_magick/tree/master
Se hai bisogno di conoscere git, dai un'occhiata a questi link:
http://git.or.cz/course/svn.html (corso intensivo con git, rispetto alla sovversione)
http://github.com/guides/git-screencasts (github screencasts)
È un involucro di rubini attorno alle funzioni di imagemagick (non sono sicuro se attach_fu lo usi internamente), ma è assolutamente salta e si limita meglio di RMagick (RMagick è estremamente gonfio, molti problemi di memoria). Comunque, la mini-magia ti permetterà di fare tutto ciò di cui hai bisogno e poi alcuni. Dai un'occhiata al README elencato sul link github sopra e ti darà la guida su come usarlo.
Ecco uno snippet:
#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)
Penso che manchi le gemme dei prerequisiti che dovrebbero essere installate per usare attach_fu per ridimensionare l'immagine. Ho lavorato con il plugin attach_fu che dipende dalle gemme seguenti
-
RMagick-2.11.0
-
image_science-1.2.0
Assicurati di aver installato sopra le gemme e apporta modifiche alla larghezza e all'altezza in has_attachment, in modo da poter vedere le modifiche.
Buona fortuna!