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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top