Redimensionamento de figuras
Função que redimensiona uma figura, mantendo suas proporções, utilizando a função scale_simple e save da classe GdkPixbuf.
Abraço a todos!
Espero que seja útil.
Estou compartilhando uma função que criei que pega uma determinada figura e redimensiona-a mantendo suas proporções originais. Utilizei a mesma em um projeto em Php-Gtk2 no qual precisava cadastrar imagens referentes a alguns dados, e o usuário poderia selecionar uma figura em seu HD, porém eu precisava limitar as dimensões do arquivo a ser armazenado e exibido pelo meu programa, sem precisar me preocupar muito em restringir o arquivo selecionado pelo usuário.
<?php
/*
Função que redimensiona uma figura passada como parâmetro, mantendo a proporção da mesma
Entrada: Largura máxima, altura máxima e caminho da
figura a ser redimensionada
Retorno: Nenhum
Saída: A figura redimensionada, criada no diretório
corrente a execução do programa em questão
*/
function redimensiona_figura($LARGMAX=320, $ALTMAX=240, $caminho_figura)
{
// Figura
$pixbuf=GdkPixbuf::new_from_file($caminho_figura);
// Calculando as proporções para gerar as
dimensões da nova figura
// Altura da figura original
$alt=(int)$pixbuf->get_height();
// Largura da figura original
$larg=(int)$pixbuf->get_width();
$escala=$larg/$alt; // Escala
// Verificação se retrato ou paisagem
if($escala>=1){
// Paisagem - Gera proporção para redimensionamento
// Proporção da imagem de acordo com a largura
$proporcao=$LARGMAX/$larg;
$largura=$LARGMAX; // Coloca a largura maxima
// Calcula a altura maxima de acordo com a proporção
$altura=floor($alt*$proporcao);
}else{
// Retrato - Gera proporção para redimensionamento
// Proporção da imagem de acordo com a altura
$proporcao=$ALTMAX/$alt;
// Coloca a altura máxima
$altura=$ALTMAX;
// Calcula a largura máxima de acordo com a proporção
$largura=floor($larg*$proporcao);
}
// Redimensiona com scale_simple
$nova_figura=$pixbuf->scale_simple($largura,$altura,Gdk::INTERP_BILINEAR);
// Salva a imagem na pasta fig
$nova_figura->save("nova_figura_redimensionada.png", 'png');
// A figura redimensionada será criada no diretório corrente de execução do programa
}
// Exemplo: Utilizando a função
$caminho_figura='figura.png'; // Caminho da figura a ser redimensionada
redimensiona_figura(240,180,$caminho_figura);
?>





