HTML, JavaScript, PHP, ASP, .Net, C#, MySQL, Ms. SQL ...

Manipulando imagens em PHP

Crie thumbnails de imagens, e monte um array com imagens de determinado diretório.

array classe imagem php thumbnail

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

TAGs

ajax arquivo asp boas práticas classe conexão sql connection string cursor location desativar programas erro cs0246 função global.asa global.asax google gráfico include rewriterule upload url amigável url rewrite


2010 - Leonardo Breda