Como você validar a largura da imagem do attachment_fu e altura?
-
20-08-2019 - |
Pergunta
Eu quero ser capaz de validar a imagem é exatamente certo com ou uma certa altura, ou se é quadrado.
No bloco de validação do modelo que has_attachment
, quando tento acesso image_size
, width
, ou height
, ele sempre sai como null.
Eu também fez a pergunta aqui se você quiser mais detalhes.
Solução
Sim, você precisa cortar um pouco a fim de obtê-lo para o trabalho, mas não tanto. Adaptação do próprio processador de imagem de 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
Outras dicas
Você não especificou o que a linguagem e sistema que você está trabalhando.
Ainda assim, para a maioria dos frameworks web, eu acho que a maneira padrão de fazer isso usando magia. Experimente o função identificar. .
Você deu uma olhada em mini-magia?
Você pode git clone-lo aqui:
http://github.com/probablycorey/mini_magick/tree/master
Se você precisa aprender sobre git, confira estes links:
http://git.or.cz/course/svn.html (curso intensivo com git, em comparação com a subversão)
http://github.com/guides/git-screencasts (screencasts github)
É um invólucro ruby ??em torno das funções imagemagick (não tem certeza se attachment_fu usa isso internamente), mas é absolutamente trancos e barrancos melhor do que RMagick (RMagick é extremamente inchado, muitos problemas de memória). Anywho, mini-magia vai deixar você fazer todas as coisas que você precisa e então alguns. Confira o README listados no link github acima, e ele vai dar-lhe o resumo sobre como usá-lo.
Aqui está um trecho:
#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)
Eu acho que está faltando gemas de pré-requisitos que devem ser instalados para usar attachment_fu para redimensionar a imagem. Eu tenho trabalhado com attachment_fu plugin que é dependente seguintes gemas
-
rmagick-2.11.0
-
image_science-1.2.0
Certifique-se de ter instalado acima gemas e mudanças fazer para a largura e altura na has_attachment então você pode ver as alterações.
Boa sorte!