Leobreda.Net

HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL

TAG cloud

.net     ajax     api     arquivo     array     asp     asp.net     banco de dados     bing     bloqueio     boas práticas     bug     c sharp     c#     c#     chart     classe     collate     collation     complemento     complementos     componente     conexão sql     connection string     css     cursor location     desativar programas     dom     erro cs0246     explorer     ferramenta de busca     firefox     ftp     função     global.asa     global.asax     google     gráfico     helicon     hospedagem ruim     hostphd     http 301     imagem     include     indexação     inicialização     insert     internet lenta     legendas     limit

Pesquisa por: imagem

Manipulando imagens em PHP

array, classe, imagem, php, thumbnail

04 de agosto de 2009     07:51125 visitas

Programação Orientada à Objeto (POO) é uma coisa que está me ajudando atualmente, pois evita criar códigos redundantes.

Pra quem sabe trabalhar com POO em PHP, abaixo uma classe que utilizo constantemente para manipular imagens: criar thumbnail e listar todas as imagens de determinado diretório.

Classe ArquivoImagem:

<?php

 Class ArquivoImagem
 {
  var $diretorio;
  var $diretorioDestino;
  var $arquivo;
  
  var $largura;
  var $altura;
 
  #########################################################
  # Monta uma relação de imagens em determinado diretório
  # Saída: Vetor com informações do tipo nome, tamanho do arquivo, largura e altura
  ######################################################### 
  function ListarImagens()
  {
   $diretorio =  strtolower($this->diretorio);
  
    $vetor_arquivos = array();
    
    //1. Abre o diretório
    if(is_dir($diretorio))
    {
     $pasta = opendir($diretorio);
     $i=0;
     while (false !==($file = readdir($pasta)))
     {
      if (($file != '.') && ($file != '..'))
      {
       //Apenas imagens com extensão jpeg, jpg, gif, png
       if ((!is_dir($file)) && (eregi('(jpeg|jpg|gif|png)$', $file)) && (false===strpos($file, "thumbnail_")))
       {
        # [0] = Nome do arquivo
        # [1] = Tamanho do arquivo, em bytes
        # [2] = Largura
        # [3] = Altura
        $vetor_arquivos[$i][0] = $file;
        $vetor_arquivos[$i][1] = filesize($diretorio.$vetor_arquivos[$i][0]);
        $vetor_arquivos[$i][2] = GetImageSize($diretorio.$vetor_arquivos[$i][0]);$vetor_arquivos[$i][2] = $vetor_arquivos[$i][2][0];
        $vetor_arquivos[$i][3] = GetImageSize($diretorio.$vetor_arquivos[$i][0]);$vetor_arquivos[$i][3] = $vetor_arquivos[$i][3][1];
        $i++;
       }
      }
      
     }
     closedir($pasta);
    }
    
   return $vetor_arquivos;
   unset($vetor_arquivos);
  }
  
  #########################################################
  # Cria Thumbnail de determinada Imagem
  ######################################################### 
  function CriarThumbnail()
  {
   $diretorio =  strtolower($this->diretorio);  //Diretório onde se encontra a imagem
   $diretorioDestino =  strtolower($this->diretorioDestino);  //Diretório onde será salvo o thumbnail
   $arquivo =  strtolower($this->arquivo);  //Nome do arquivo da imagem
   $altura  =  strtolower($this->altura);   //Tamanho da imagem, em altura
   $largura =  strtolower($this->largura);  //Tamanho da imagem, em largura
  
   //1. Lê a imagem de origem
   $img_origem = imagecreatefromjpeg($diretorio.$arquivo);

   

   //2. Pega as dimensões da imagem de origem
   $origem_x = imagesx($img_origem); // Largura
   $origem_y = imagesy($img_origem); // Altura

   

   //3. Escolhe a largura maior, e se baseando nela mesma, gera a largura menor
   if($origem_x > $origem_y)  // Se a largura for maior que a altura
   {
    $final_x = $largura; // A largura será a do thumbnail
    $final_y = floor($largura * $origem_y / $origem_x); // A altura é calculada
    $f_x = 0; // Colar no x = 0
    $f_y = round(($altura / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail
   }
   else
   { // Se a altura for maior ou igual à largura
    $final_x = floor($altura * $origem_x / $origem_y); // Calcula a largura
    $final_y = $altura; // A altura será a do thumbnail
    $f_x = round(($largura / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail
    $f_y = 0; // Colar no y = 0
   }

   

   //4. cria a imagem final para o thumbnail
   $img_final = imageCreatetruecolor($largura,$altura);
   
   //5. Define a cor do fundo (branco)
   imagefill($img_final,0,0,imagecolorallocate($img_final, 255, 255, 255));

   

   //6. Copia a imagem original para dentro do thumbnail
   imagecopyresampled($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y);

   

   //7. Salva o thumbnail
   imagejpeg($img_final, $diretorioDestino."thumbnail_".$arquivo, 90);

 

   //8. Garbage Collector
   ImageDestroy($img_origem);
   ImageDestroy($img_final);
  }
 }

2010 - Leonardo Breda