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.

Foi útil?

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

  1. rmagick-2.11.0

  2. 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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top