• Artigos
  • Projetos
  • Download
  • Docs
  • Enviar Artigo
  • ?

Redimensionamento de figuras

08/01/2010  Murillo Cesário Zerbinato  Ler e Comentar

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);

?>




Comentários

 Adicionar Comentário
 login
 Senha
 Título
 Comentário

Livros




    Outros

    Busque conteúdo no site
    Participe de nosso grupo no google

    [Grupo]  [Arquivos] [Mapa Usuários]

    Google

    Parceiros

 
Designed by Wolfgang Bartelme Designed by Wolfgang Bartelme

© 2006 Wordpress Themes | Theme (Not so) Fresh
XHTML CSS RSS