dimensionando uma imagem proporcionalmente sem conhecer dimensões

Eu tenho um script que recupera imagens remotas de vários URLs. A largura e altura são variables ​​desconhecidas.

Eu os tenho exibidos na minha página e estou reduzindo a altura para 55px para cada um. No entanto, as imagens que são muito amplas (banners, etc.) estão exibidas na sua largura total.

Não consigo restringir a largura e a altura porque eu vou distorcer a imagem. Alguém conhece uma solução criativa que irá dimensionar proporcionalmente essas imagens para que não excedam 55px (h) E 75px (w)?

ps Eu tentei getimagessize () no php, mas as funções demoram muito para completar

Obrigado!

Eu tive um problema semelhante, mas eu estava usando jQuery. Mas acho que você pode usar a mesma lógica em php para calcular o tamanho da imagem.

var maxWidth = 75; // Max width for the image var maxHeight = 77; // Max height for the image var ratio = 0; // Used for aspect ratio var width = $(this).width(); // Current image width var height = $(this).height(); // Current image height // Check if the current width is larger than the max if(width > maxWidth){ ratio = maxWidth / width; // get ratio for scaling image $(this).css("width", maxWidth); // Set new width $(this).css("height", height * ratio); // Scale height based on ratio height = height * ratio; // Reset height to match scaled image width = width * ratio; // Reset width to match scaled image } // Check if current height is larger than max if(height > maxHeight){ ratio = maxHeight / height; // get ratio for scaling image $(this).css("height", maxHeight); // Set new height $(this).css("width", width * ratio); // Scale width based on ratio width = width * ratio; // Reset width to match scaled image } 

Espero que isso seja de alguma ajuda.

Bah Eu só percebi que o cérebro ganhava, tamanho de imagem desconhecido. Desconsidere tudo

e ei, você sempre pode usar css para fazer isso! Como esta resposta explica , mas você terá que evitar o ie6 e talvez o ie7 para esse recurso (você pode usar comentários condicionais para resize com javascript ou o script php do serverside neste cenário)

A propósito, a resposta acima funciona! mas você deve adicionar o img programticamente e obter a altura e a largura da imagem diretamente do object como este e, em seguida, executar a function de redimensionamento acima:

  var rimg = new Image(); rimg.src = "yourimageserverurl"; var original_height = rimg.height; var original_width = rimg.width; start the resize function on rimg..