Criando imagem miniatura com PHP | Thumbnail com efeitos

Programação PHP: Gere imagens miniaturas (Thumbnail) ou mesmo redimensione imagens para um certo padrão, de forma prática e com ótimos recursos como moldura, borda, texto e muitos outros efeitos.

Icon

easyphpthumbnail-20121216.zip
18.87 KB 5849 downloads

Autor: Jos Nutbroek (JN)
País: Holanda
Site: PHP Classes

Sobre

Como diz o ditado: “Uma imagem vale por mil palavras”. Fazendo disso uma verdade, segue abaixo alguns dos inúmeros efeitos que a classe easyphpthumbnail.class.php pode lhe proporcionar. Tudo com código fonte e exemplo da imagem com seu respectivo efeito.

Para o código não ficar repetitivo, nos exemplos seguintes irei escrever apenas os códigos relativos aos efeitos, representado pelo item (3) abaixo, já que a lógica para todos efeitos tem a mesma sequência.

Código padrão | Obrigatório em todos os exemplos seguintes

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    /** (1) Importa a classe: easyphpthumbnail.class.php */
    include_once('easyphpthumbnail.class.php');
 
    /** (2) Instancia um objeto da classe: $thumb */
     $thumb = new easyphpthumbnail;
 
    /** (3) Aplica o código fonte com o EFEITO desejado */
    $thumb -> Thumbsize = 300;
 
    /** (4) Cria um thumbnail e a saída na tela ou arquivo */
    $thumb -> Createthumb('image.jpg');
?>

Observação
No exemplo acima, a imagem é exibida na tela em tempo de execução. Caso você queira gravar a imagem em disco, utilize ‘file’ como segundo parâmetro do método Createthumb(), conforme a seguir demonstrado:

1
2
3
4
<?php
    // Cria a imagem miniatura (thumbnail) e grava em arquivo
    $thumb -> Createthumb('gfx/image.jpg', 'file');
?>

Dentro do pacote disponível para download, existe o arquivo API.txt que contém descrições de todas as variáveis e funções da classe easyphpthumbnail.class.php.

Imagem original – 150 x 113 pixels | Sobre esta imagem serão aplicados efeitos

imgori

Exemplo 1 – Redimensionamento automático da imagem | A imagem é ajustada para o tamanho 90 pixels

1
2
3
<?php
     $thumb -> Thumbsize = 90; 
?>

Exemplo 2 – Adiciona um quadro ao redor da imagem | 10 px de largura e na cor vermelha

1
2
3
4
<?php
     $thumb -> Framewidth = 10;
     $thumb -> Framecolor = '#FF0000';
?>

Exemplo 3 – Adiciona um texto (copyright) na imagem | Define texto, posição, tipo, tamanho e cor da fonte

1
2
3
4
5
6
7
<?php
    $thumb -> Copyrighttext = 'taylorlopes.com';
    $thumb -> Copyrightposition = '50% 90%';
    $thumb -> Copyrightfonttype = 'MAIAN.TTF';
    $thumb -> Copyrightfontsize = 14;
    $thumb -> Copyrighttextcolor = '#FFFFFF';
?>

Exemplo 4 – Define a altura da imagem | Mantém as proporções: 50px de altura

1
2
3
<?php
    $thumb -> Thumbheight = 50;
?>

Exemplo 5 – Define a largura da imagem | Mantém as proporções: 100px de largura

1
2
3
<?php
    $thumb -> Thumbwidth = 100;
?>

Exemplo 6 – Defina o redimensionamento de percentagem em vez de pixels | 50% do tamanho original

1
2
3
4
<?php
    $thumb -> Thumbsize = 50;
    $thumb -> Percentage = true;
?>

Exemplo 7 – Permitir que as imagens sejam alargadas (Infladas) | Ajusta para 300 px

1
2
3
4
<?php
    $thumb -> Thumbsize = 300;
    $thumb -> Inflate = true;
?>

Exemplo 8 – Define a qualidade da imagem, de 0 a 100 | 10% de qualidade em relação a original

1
2
3
<?php
    $thumb -> Quality = 10;
?>

Exemplo 9 – Cria uma sombra na imagem | Define a cor do sombreamento

1
2
3
4
<?php
    $thumb -> Backgroundcolor = '#D0DEEE';
    $thumb -> Shadow = true;
?>

Exemplo 10 – Recorta os cantos da imagem | Define a cor do de fundo (área cortada)

1
2
3
4
<?php
    $thumb -> Backgroundcolor = '#FFFFFF';
    $thumb -> Clipcorner = array(1,15,0,1,1,1,1);
?>

Exemplo 11 – Simula a idade da imagem | Imagem com aparência antiga

1
2
3
<?php
    $thumb -> Ageimage = array(1,10,80);
?>

Exemplo 12 – Adiciona uma moldura na imagem | A moldura é ajustada à imagem

1
2
3
<?php
    $thumb -> Borderpng = 'border.png';
?>

Exemplo 13 – Simula um fichário (aspiral) adicionado à imagem | Define borda e cor do quadro

1
2
3
4
5
6
<?php
    $thumb -> Framewidth = 10;
    $thumb -> Framecolor = '#000000';
    $thumb -> Binder = true;
    $thumb -> Binderspacing = 8;
?>

Exemplo 14 – Gira a imagem de paisagem para retrato, no sentido horário | 90 graus

1
2
3
<?php
    $thumb -> Rotate = 90;
?>

Exemplo 15 – Inverte a imagem horizontalmente

1
2
3
<?php
    $thumb -> Fliphorizontal = true;
?>

Exemplo 16 – Inverte a imagem verticalmente

1
2
3
<?php
    $thumb -> Flipvertical = true;
?>

Exemplo 17 – Gira a imagem sem cortes

1
2
3
<?php
    $thumb -> Rotate = -30;
?>

Exemplo 18 – Gira e corta a imagem

1
2
3
4
5
<?php
    $thumb -> Rotate = -30;
    $thumb -> Croprotate = true;
    $thumb -> Backgroundcolor = '#FFFFFF';
?>

Exemplo 19 – Cria uma tela sempre quadrada | O pontilhado é só para destacar que a imagem ficou quadrada

1
2
3
<?php
    $thumb -> Square = true;
?>

Exemplo 20 – Recorta a imagem

1
2
3
<?php
    $thumb -> Cropimage = array(2,0,20,20,35,35);
?>

Exemplo 21 – Cria uma marca d’água

1
2
3
4
5
<?php
    $thumb -> Watermarkpng = 'watermark.png';
    $thumb -> Watermarkposition = '50% 50%';
    $thumb -> Watermarktransparency = 40;
?>

Exemplo 22 – Aplica um filtro pré-definido para a imagem (lento em PHP4)

1
2
3
4
5
6
7
<?php
    $thumb -> Edge = true;
    $thumb -> Emboss = true;
    $thumb -> Sharpen = true;
    $thumb -> Blur = true;
    $thumb -> Mean = true;
?>

Exemplo 23 – Aplica um filtro personalizado para a imagem (lento no PHP4)

1
2
3
4
5
6
<?php
    $thumb -> Filter = array(-1,-1,-1,-1,8,-1,-1,-1,-1);
    $thumb -> Divisor = 1;
    $thumb -> Offset = 0;
    $thumb -> Applyfilter = true;
?>

Exemplo 24 – Aplica uma perspectiva para a imagem | Esquerda para direita

1
2
3
4
<?php
    $thumb -> Perspective = array(1,0,20);
    $thumb -> Backgroundcolor = '#FFFFFF';
?>

Exemplo 25 – Aplica uma perspectiva para a imagem | Direita para esquerda – Thumb

1
2
3
4
<?php
    $thumb -> Perspectivethumb = array(1,1,25);
    $thumb -> Backgroundcolor = '#FFFFFF';
?>

Exemplo 26 – Aplica um efeito de sombreamento interno

1
2
3
4
<?php
    $thumb -> Shading = array(1,70,80,0);
    $thumb -> Shadingcolor = '#D0DEEE';
?>

Exemplo 27 – Aplica um efeito de espelho na imagem

1
2
3
4
5
<?php
    $thumb -> Mirror = array(1,10,90,40,2);
    $thumb -> Mirrorcolor = '#FFFFFF';
    $thumb -> Backgroundcolor = '#FFFFFF';
?>

Exemplo 28 – Aplica um efeito de negativo

1
2
3
<?php
    $thumb -> Negative = true;
?>

Exemplo 29 – Troca uma cor na imagem | Troca a cor preta por azul

1
2
3
<?php
    $thumb -> Colorreplace = array(1,'#000000','#0000FF',60);
?>

Exemplo 30 – Reposiciona os pixels randomicamente | Efeito de distorção

1
2
3
<?php
    $thumb -> Pixelscramble = array(1,4,2);
?>

Exemplo 31 – Converte para escala de cinza

1
2
3
<?php
     $thumb -> Greyscale = true;
?>

Exemplo 32 – Altera o Brilho da imagem

1
2
3
<?php
     $thumb -> Brightness = array(1,50);
?>

Exemplo 33 – Mescla uma cor

1
2
3
<?php
     $thumb -> Colorize = array(1,0,0,125,0);
?>

Exemplo 34 – Torce uma imagem

1
2
3
<?php
     $thumb -> Twirlfx = array(1,20,0);
?>

Exemplo 35 – Cria efeito de ondulação na imagem

1
2
3
<?php
     $thumb -> Ripplefx = array(1,5,15,5,5);
?>

Exemplo 36 – Cria efeito de lago na imagem

1
2
3
<?php
     $thumb -> Lakefx = array(1,15,80);
?>

Exemplo 37 – Cria efeito de gota d’água na imagem

1
2
3
<?php
     $thumb -> Waterdropfx = array(1,1.2,400,40);
?>

Exemplo 38 – Combinando alguns efeitos

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $thumb -> Thumbsize = 300;
    $thumb -> Copyrighttext = 'taylorlopes.com';
    $thumb -> Copyrightposition = '50% 80%';
    $thumb -> Copyrightfonttype = 'MAIAN.TTF';
    $thumb -> Copyrightfontsize = 20;
    $thumb -> Copyrighttextcolor = '#FFFFFF';
    $thumb -> Borderpng = 'border.png';
    $thumb -> Backgroundcolor = '#D0DEEE';
    $thumb -> Mirror = array(1,30,90,40,2);
    $thumb -> Mirrorcolor = '#D0DEEE';
?>
Total de acessos: 45469

55 comentários sobre “Criando imagem miniatura com PHP | Thumbnail com efeitos

  1. Olá Taylor, estou com uma dúvida muito cruel…
    No uso de imagens dinãmicas o uso de função no lugar do image.jpg não me ajudaria certo??

    /** (4) Cria um thumbnail e a saída na tela ou arquivo */
    $thumb -> Createthumb(‘image.jpg’);

    Qual seria o melhor modo de se fazer isto??

  2. Boa tarde Taylor,
    muito bom para manipular as imagens, só tem um detalhe que eu acabei encontrando, que ao setar o chmod da pasta, na linha 1843 da sua classe:

    if ($this->Chmodlevel!=”) {chmod($this->Thumblocation.$this->Thumbprefix.$this->image,octdec($this->Chmodlevel));}

    falta um basename antes do atributo $this->image, pois senao ele n encontrar o caminho correto da sua pasta. Ficando assim:

    if ($this->Chmodlevel!=”) {chmod($this->Thumblocation.$this->Thumbprefix.basename($this->image),octdec($this->Chmodlevel));}

    No mais ta tudo tranquilo. Valeu, abraços

    • Oi Elenilton.
      Essa classe PHP gera uma imagem com um dos efeitos acima descritos, a partir de outra imagem. Ou seja, ela pega uma imagem já existente e cria outra, que inclusive pode ser um thumbnail (miniatura)! Pelo que entendi, você quer tirar um printscreen ou screenhost. Neste caso, esta classe não te atende, pois a imagem “matriz” ainda não existe.

      Para tirar screenhost (capturar tela de sites), você pode instalar um plugin Firefox ou aplicativos para este fim:
      ScreenGrab – http://www.screengrab.org/
      LightShot – http://lightshot.skillbrains.com/
      WebShot – http://www.websitescreenshots.com/

      Você também pode usar sites que fazem este serviço online (screenhost), bastando digitar a URL do site que deseja capturar a tela:
      Thumbalizr – http://www.thumbalizr.com/
      Webshotspro – http://www.webshotspro.com/
      Kwout – http://kwout.com/

      Não sei se era isso, mas fica aqui esta dica! Aliás, tem muitos outros por aí… Falou, t+

      • Essa duvida ‘e a mesma que tenho.
        Eu tenho imagens que preciso redimencionar.
        Mas as imagens estao em outro servidor.
        Pra usar essa clase eu fiz assim :

        $thumb -> Createthumb(‘http://www.agritechmt.com.br/files/imagens/201201/1325718595.png’);

        mas não deu certo.
        Como poderia fazer algo do tipo.
        Tem alguma forma de informar a url da imagem?
        Obrigado

      • Uma coisa é capturar a tela de um site (screenhost); outra é recuperar uma imagem… em todo caso, veja abaixo o comentário que fiz aqui em “5 de janeiro de 2012 às 9:42” sobre “CRIANDO THUMBNAIL DE IMAGEM LOCALIZADA EM OUTRO SITE”. Falouuu…

    • Oi Geovani, seguinte, testei aqui e funciona perfeitamente todas as configurações do exemplo acima (redimensionamento, efeitos, salvar imagem em disco, etc). Será que seu problema não é por que está faltando habilitar a extensão php_gd2 no seu php.ini? O GD é uma biblioteca do PHP utilizada para manipulação de imagem. Só pra constar, estou usando PHP Version 5.3.0. Falou, T+.

  3. André Luiz disse:

    Taylor, o script é mto bom. Era justamente isso que eu estava procurando, mas tenho uma dúvida.
    E se eu quiser colocar dentro de um looping? Como funcionaria? Eu tentei abaixo e não funcionou. Provavelmente errei alguma coisa.

    Obrigado!

    $sql = “SELECT * from ultimoscloses WHERE ativo=’1′ ORDER BY id DESC LIMIT 3”;
    $resultado = mysql_query($sql);
    while($linha = mysql_fetch_array($resultado, MYSQL_BOTH)){

    $foto1=$linha[‘foto1’];
    ?>


    Createthumb(‘admin/foto/$foto1’);?>

    • Oi André, testei aqui e funciona bem. O que você deve fazer é salvar o thumbnail e depois exibí-lo, ao invés de apenas jogar a saída para a tela. Como descrevi neste Artigo você deve usar a opção ‘file’ no segundo parâmetro do método Createthumb. Abaixo fiz e testei um exemplo de loop com imagens, basta adaptar a sua necessidade. Falou, t+

      FAZENDO LOOP COM IMAGENS

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      
      <?php
          /** (1) Importa a classe: easyphpthumbnail.class.php */
          include_once('easyphpthumbnail.class.php');
       
          /** (2) Instancia um objeto da classe: $thumb */
           $thumb = new easyphpthumbnail;
       
          /** (3) Aplica o código fonte com o EFEITO desejado */
          $thumb -> Thumbsize = 100;
       
          /** (4) Array de imagens - PODE SER ENTRADA VINDA DO BANCO DE DADOS */
          $images = array('example1.jpg', 'example2.jpg', 'example3.jpg');
       
          /** (5) Faz o loop para criar as imagens e exibí-las */
          foreach ($images as $image) {
       
            /** (6) Cria o thumbnail e salva em disco local */ 
            $thumb -> Createthumb($image, 'file');
       
            /** (7) Exibe o thumbnail salvo */      
            echo "<img src='thumbnail_".$image."' /><br />";
          }
       
          /** (8) Destroi o objeto - libera memória */ 
          unset($thumb);  
      ?>
      • Cleidisson disse:

        Bom dia Taylor tudo bem?
        Estou tentando utilizar a classe que vocÊ postou, para recuperar imagens vindas do banco de dados, gerar as miniaturas e imprimir elas na tela.
        Porém como é uma busca, e esta é percorrida através de um while,e o número de imagens é diferente a cada pesquisa, não consegui ajustar
        para funcionar.
        Teria alguma forma de que ele ao invés de salvar apenas imprima o efeito na tela?
        Ou o que você me propõe?
        Obrigado desde já.

      • Vagner disse:

        cara copiei e colei o teu exemplo mas não funcionou pode me ajudar??

        //teste para ver se foto realmento existe
        echo ”;

        /** (1) Importa a classe: easyphpthumbnail.class.php */
        include_once(‘easyphpthumbnail.class.php’);

        /** (2) Instancia um objeto da classe: $thumb */
        $thumb = new easyphpthumbnail();

        /** (3) Aplica o código fonte com o EFEITO desejado */
        $thumb -> Thumbsize = 100;

        /** (4) Array de imagens – PODE SER ENTRADA VINDA DO BANCO DE DADOS */
        $images = array(‘fotos/vagner.jpg’, ‘fotos/511e3eaf61191.jpg’);

        /** (5) Faz o loop para criar as imagens e exibí-las */
        foreach ($images as $image) {

        /** (6) Cria o thumbnail e salva em disco local */
        $thumb -> Createthumb($image, ‘file’);

        /** (7) Exibe o thumbnail salvo */
        echo “”;
        }

        /** (8) Destroi o objeto – libera memória */
        unset($thumb);

      • Oi Vagner, cara, o código funciona, testei várias vezes. Que chave “}” perdida ali depois da linha 7? Outra coisa, como disse antes, será que seu problema não é por que está faltando habilitar a extensão php_gd2 no seu php.ini?

  4. André Luiz disse:

    O Script que estou tentando fazer e por algum motivo não foi completo seria este abaixo:

    $sql = “SELECT * from ultimoscloses WHERE ativo=’1′ ORDER BY id DESC LIMIT 3”;
    $resultado = mysql_query($sql);
    while($linha = mysql_fetch_array($resultado, MYSQL_BOTH)){
    $titulo = $linha[‘titulo’];
    $id = $linha[‘id’];
    $subtitulo = $linha[‘subtitulo’];
    $link = $linha[‘link’];
    $foto1=$linha[‘foto1’];
    ?>
    Createthumb(‘admin/ultimoscloses/$foto1’);?>

    Obrigado!

  5. Muito boa a classe.
    Uso a muito tempo (cerca de 2 anos) a Classe do Verot.net que tem algumas das funcionalidades similares a essa classe.

    Vou implementar sua classe em alguns dos meus projetos tambem.
    Parabéns pelo trabalho.

  6. Marcelo disse:

    Gostei muito desta classe, gostaria de saber se é possível usar ela com um arquivo vindo de um formulário.

    Exemplo:

    Tenho a página upload.php onde tenho o formulário para adicionar um arquivo, adiciono o arquivo e envio para o arquivo da classe.
    a classe faria a função de criar o thumbnail em arquivo.
    Será que tem como fazer isso?
    O que me diz ou o que eu posso fazer em relação?

    Obrigado e parabéns pelo post.

    • Oi Wanderson, você primeiro precisa salvar a imagem remota em disco para então depois poder aplicar o efeito. Veja:

      CRIANDO THUMBNAIL DE IMAGEM LOCALIZADA EM OUTRO SITE

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      
          /** (1) Recupera a imagem remota (em outro site) */
          $image_remote = file_get_contents('http://taylorlopes.com/images/logo.gif'); 
       
          /** (2) Define o nome da imagem local a ser salva em disco */ 
          $image_local = 'imagem.jpg';
       
          /** (3) Salva a imagem em disco local */
          file_put_contents($image_local, $image_remote);
       
          /** (4) Importa a classe: easyphpthumbnail.class.php */
          include_once('easyphpthumbnail.class.php');
       
          /** (5) Instancia um objeto da classe: $thumb */
          $thumb = new easyphpthumbnail;
       
          /** (6) Aplica o código fonte com o EFEITO desejado */
          $thumb->Thumbsize = 100;
       
          /** (7) Cria um thumbnail e e salva em disco (arquivo) */
          $thumb->Createthumb($image_local, 'file');
       
          /** (8) Exibe o thumbnail salvo */      
          echo "<img src='thumbnail_".$image_local."' /><br />";
       
          /** (9) Destroi o objeto - libera memória */ 
          unset($thumb);


      • Ja tinha pensado nisso. Mas as imagens vão ficar salvas no servidor.
        Ai tenho que criar um script que fara a limpeza das imagens com um determinado tempo que foram carregadas no site.
        Por que isso geraria um acumulo de imagens que não serão usadas com tanta frequência.
        O que eu queria era ver se tinha alguma forma de manipular uma imagem na web.
        Mas mesmo assim obrigado.
        Essa classe ja esta me ajudando bastante.
        Assim não preciso reinventar a roda.

        Valeu mesmo. O “Jos Nutbroek” está de parabéns.
        E vc tambem por fazer a ponte entre a gente e essa classe que tenho certeza que ajudará muitos desenvolvedores.

      • Olá, também estou com o mesmo problema, só que no meu caso, utilizo url amigável, e quando ela está ativa dá o erro Warning: imagedestroy() expects parameter 1 to be resource, null given in C:\wamp\www\site……..class.php on line 1022 e quando desativo funciona sem qualquer problema… se souber como resolver isto, valeu e parabéns pelo post…

  7. Djalma disse:

    Olá Taylor Lopes,
    parabéns pelo post é exatamente o que estava precisando.
    Muito obrigado.

    Gostaria de contar com sua ajuda, não consigo colocar o efeito em duas imagens, ambas em arrays diferentes.

    uma fica com o tamanho que escolhi e a outra fica maior não entendi.

    Atenciosamente,
    Djalma Bento

    • Oi, você precisa tentar encontrar a causa do erro relatado. Veja que no comentário acima, em “18 de março de 2011 às 14:02”, demonstrei como fazer loop com as imagens (diferentes), sendo, portanto, possível. Certifique-se do tipo de imagem que você está tentando aplicar o efeito; mas isto não deve ser feito considerando a extensão do arquivo e sim o MIME. É que as vezes a extensão pode ser sido modificada, sem que a imagem tenha sido, e claro, o navegador exibe normalmente, pois baseia-se no MIME. Para ter certeza, abra a imagem com um editor qualquer e “salve como” sendo do tipo: .jpg, .png ou .gif. E por último, baixe novamente a classe (acima) e substitua pela que você está usando, pois acabei de atualizá-la pegando a última versão que o autor liberou. T+

  8. Régis Adamavicius disse:

    Olá estou lendo sobre a biblieoteca GD, mas não consigui rodar o efeito, pra mim só aparece erro “A imagem http://localhost/teste.php contém erros e não pode ser exibida” eu uso o Xampp mais recente php 5.3.8 apache 2.2 e a biblioteca GD2 está habilitada
    a classe está no memso diretório – tô achando muito estranho !

    valeu

  9. Camilo disse:

    brother nao to conseguindo utilizar o codigo, estou tentando apos postar a imagem fazer com que ele crie a miniatura e salve o arquivo e esta dando o seguinte erro
    Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\Inetpub\vhosts\belasfestasbuffet.com.br\httpdocs\php\easyphpthumbnail.class.php on line 1000

    o codigo que montei é o seguinte ,

    //cria miniatura
    /** (1) Importa a classe: easyphpthumbnail.class.php */
    include_once(‘easyphpthumbnail.class.php’);

    /** (2) Instancia um objeto da classe: $thumb */
    $thumb = new easyphpthumbnail;

    /** (3) Aplica o código fonte com o EFEITO desejado */
    $thumb -> Thumbsize = 100;

    // Cria a imagem miniatura (thumbnail) e grava em arquivo
    $thumb -> Createthumb(‘$img’, ‘file’);

    echo “”;

    • Taylor Lopes disse:

      Testei seu código aqui e funcionou normal. A única coisa que fiz, claro, foi trocar sua variável $img por um nome de imagem válido (que existia no meu diretório). Fora isto, notei que as Aspas estava esquisitas, então troquei por aspas duplas. Rodou legal… Esse erro aí certamente é por que a imagem que você informou em $img não existe ou está com o nome diferente da existente….

    • Oi Eder, fiz uma função, não sei se ajuda… bastaria fazer as chamadas mudando os parâmetros, claro…

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      
      <?php
      /**
       * Recupera uma imagem por URL e cria um Thumbnail
       * @author Taylor Lopes   2012.09.24 - taylorlopes.com
       * @param  $image_input   URL da imagem de entrada (original)
       * @param  $image_output  Caminho absoluto para onde será salvo o Thumb 
       * @param  $image_effects array de efeitos
       * @return boolean
       * @dependence class easyphpthumbnail.class.php
      */  
      function getURLImageSetThumb($image_input, $image_output, $image_effects) {
        $image_remote = file_get_contents($image_input); 
        file_put_contents( basename($image_output), $image_remote);
        include_once('easyphpthumbnail.class.php'); 
        $thumb = new easyphpthumbnail;      
        foreach($image_effects as $effect => $value) {
          $thumb->$effect = $value;
        }  
        @$thumb->Createthumb( basename($image_output), 'file');
        if (copy("thumbnail_".basename($image_output), $image_output)) {
          unlink(basename($image_output));
          unlink("thumbnail_".basename($image_output));
          return true;
        } else {
          return false;
        }      
      }
       
      // A chamada ficaria, por exemplo, assim:
      $image_input   = 'http://taylorlopes.com/images/logo.gif';
      $image_output  = 'C:/wamp/www/suapasta/image.jpg';
      $image_effects = array('Shadow' => true,
                             'Thumbsize' => 300,
                             'Perspectivethumb' => array(1,1,25)
                            );                      
      getURLImageSetThumb($image_input, $image_output, $image_effects);
      ?>
    • Diego, acabei de fazer um teste aqui e funcionou certinho com jpg, inclusive, todos os exemplos de imagens geradas no Artigo são em jpg também. Minha versão do PHP é 5.3.13. Lembro ainda que a extensão php_gd2 deve estar habilitada no php.ini. Verifique se há alguma mensagem de erro e busque uma solução adequada. Falouuu…

    • Olá, para arredondar a borda ou canto da imagem, você poderia usar um simples CSS de 1 única linha, assim:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      <!DOCTYPE html>
      <html>
        <head>
          <title>Imagem com canto arredondado</title>
          <style>
            .border-image{border-radius:7px;}
          </style>
        </head>
        <body> 
           <img src="imgori.jpg" class="border-image" />
        </body>
      </html>

      Exemplo:

      Sem canto arredondado

      Com canto arredondado

  10. Mara disse:

    Olá Taylor, gostaria de saber como salvo a thumby dentro de uma pasta, já tentei de tudo e não consigo, parece que o plugin ão aceita, estou precisando muito, se alguém souber pode me ajudar?

    Socorro!!

    • Oi, dê uma olhada no comentário do dia “24 de setembro de 2012 at 23:13”. Criei a função getURLImageSetThumb() onde um dos parâmetros é justamente o caminho absoluto para onde será salvo o Thumb. Veja se resolve… falou!

  11. Paulo disse:

    Bom dia Taylor, cara primeiro parabéns e muito obrigado por disponibilizar e dividir essa class maravilhosa. Cara to com uma duvida ai na hora de renomear a imagem.

    [code]
    $thumb -> Thumbprefix = ‘390-‘;
    $thumb -> Thumblocation = ‘fotos/thumb/’;
    $thumb -> Thumefilename = $reaname.’jpg’;
    $thumb -> Createthumb(“fotos/”.$imagem,’file’);
    [/code]

  12. Olá Taylor. Gostaria de saber se existe algum método na biblioteca GD do PHP que possa identificar a orientação de uma foto. Estou tendo um grande problema e preciso criar um código para ajustar isso. Você pode me ajudar?

  13. não estou conseguindo usar

    ja tentei assim :

    include_once(‘easyphpthumbnail.class.php’);
    $thumb = new easyphpthumbnail;
    $thumb->Createthumb(‘img/fotoA.jpg’);

    assim :

    Createthumb(‘img/fotoA.jpg’);
    ?>

    <img src="Createthumb(‘img/fotoA.jpg’)?>” />

    e assim

    <img src="Createthumb(‘img/fotoA.jpg’)?>” />

    nada da certo porque ??? estou usando PHP 5.3

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *