Calcular O Redimensionamento De Uma Imagem Mantendo As Proporções
Cálculo simples
Escrito por Klawdyo em
PHP. Data: 29/01/2008
Licença: Alguns direitos reservados. Dar créditos ao autor e linkar este original
Ver tópico original no fórum.
Hoje, dando uma olhada na net, achei em um fórum uma dúvida interessante, mas muito simples. Acho que muitos aqui devem saber de cór a solução, mas a galera iniciante sempre passa batida, muitas vezes, é verdade, por preguiça de pensar. Sem mais delongas, vamos ao problema.
Calcular o redimensionamento de uma imagem mantendo as proporções da original?
É bom deixar claro que não vou mostrar como redimensionar, propriamente falando, apenas vou mostrar o cálculo. O redimensionamento propriamente dito será feito no próximo artigo.
Caso 1
Supondo que tenho uma imagem com proporções 480x640, e quero achar o valor da largura proporcional para uma altura de 300 pixels. Temos
<?
//primeiramente acharemos um fator de redimensionamento,
//dividindo a altura atual (640) pela altura desejada (300)
$fator_redim = 640/300; //resultado: 2,1333 //agora que achei o fator de redimensionamento, vou
//pegar a largura atual (480) e vou dividi-la por $fator_redim
$largura_ideal = 480/$fator_redim; //Resultado: 225,00
?>
Logo, minha largura ideal, será 225 pixels. Fácil, né?
Agora vamos aprofundar um pouco mais. Vou criar uma função que tem o objetivo de fazer esse cálculo e retornar o valor da largura ideal.
Essa função será útil no nosso próximo tutorial. Vamos à ela.
<?
/* FUNÇÃO REDIMENSIONA
* 29/01/2008
* Autor: José Cláudio Medeiros de Lima
* Objetivo: indicar a altura (ou largura) ideal para o possível
* redimensionamento de uma imagem.
*/
function redimensiona($caminho,$altura="",$largura="")
{
//$caminho é o caminho da imagem. Vamos achar as dimensões
//da imagem automaticamente a partir dele.
//achando as propriedades da imagem
$propriedades = getimagesize[/color]($caminho);
//getimagesize retorna um array contendo várias informações
//sobre aimagem, mas só precisaremos dos dois primeiros.
//O índice ZERO recebe a largura da imagem e o UM a altura
$altura_atual = $propriedades[1];
$largura_atual = $propriedades[0];
//Agora vamos fazer algumas verificações: Por exemplo, não
//faz sentido informar a largura e a altura nos parâmetros
//da função, só um deles é necessário. Então vamos dizer
//que a altura é o mais importante, e se forem informadas as
//duas, só a altura será levada em consideração
[color="#0000ff"] if(isset($altura))
{
return $largura_atual/($altura_atual/$altura);
}
elseif(!isset($altura) && isset($largura))
{
return $altura_atual/($largura_atual/$largura);
}
}
?>
Comentários:
CassianoOliver disse:
parabéns...
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).