Detecte a orientação da imagem com imagemagick
-
21-09-2019 - |
Pergunta
Quero redimensionar uma imagem para um novo tamanho usando um parâmetro: largura.
Se a imagem for horizontal, o novo tamanho será: largura = largura, altura = proporcional à largura.
E se a imagem for vertical, o novo tamanho será: altura = largura, largura = proporcional à altura.
Alguma ideia de como implementar isso?
Estou usando o ImageMagick com o Magicknet Wrapper.
Solução
Da referência de uso em http://www.imagemagick.org/usage/resize/
convert org.jpg -resize widthxwidth final.jpg
por exemplo, a largura da largura pode ser 256x256
A proporção será mantida e o redimensionamento será feito dentro do limite de 256 x 256 pixels.
Citado na página acima:
O redimensionamento se encaixará na imagem no tamanho solicitado. Não preenche o tamanho da caixa solicitado.
Outras dicas
Não tenho certeza exatamente do que você quer dizer aqui. Você diz que só quer definir a largura, mas no caso "vertical", você define a altura como a largura? De qualquer forma, se você quiser redimensionar algo usando apenas a largura, use este pseudo-código:
ratio = width / height
newWidth = <the new width>
newHeight = newWidth / ratio
Se você deseja redimensionar o tamanho mais longo para um determinado valor, tente o seguinte:
ratio = width / height
if ratio > 1 // wider than it is tall
newWidth = <theValue>
newHeight = newWidth / ratio
else // taller than it is wide
newHeight = <theValue>
newWidth = newHeight * ratio