Criando Thumbnails dinâmicamente utilizando PHP

Vamos ao que interessa.

Arquivos: Download

Utilizaremos a classe cCropImage conforme abaixo:

Arquivo: cCropImage.php

<?php
    class cCropImage{
        var $imgSrc,$myImage,$cropHeight,$cropWidth,$x,$y,$thumb;

        function setImage($image)
        {
            //Sua Imagem
            $this->imgSrc = $image; 

            //Capturando as dimensões da imagem
            list($width, $height) = getimagesize($this->imgSrc); 

            //Criando a imagem
            $this->myImage = imagecreatefromjpeg($this->imgSrc) or die("Erro: Não foi possível encontrar a imagem!"); 

            if($width > $height) 
            {
                $biggestSide = $width; //Procurando pelo maior (largura ou altura)
            }
            else
            {
                $biggestSide = $height; 
            }

            //Proporção do crop
            $cropPercent = .5; // Esta proporção gerará um zoom de 50% (crop)
            $this->cropWidth   = $biggestSide*$cropPercent; 
            $this->cropHeight  = $biggestSide*$cropPercent; 

            $this->x = ($width-$this->cropWidth)/2;
            $this->y = ($height-$this->cropHeight)/2;
        }

        function createThumb()
        {
            $thumbSize = 60; // Definição do tamanho do thumbnail
            $this->thumb = imagecreatetruecolor($thumbSize, $thumbSize); 
            imagecopyresampled($this->thumb, $this->myImage, 0, 0,$this->x, $this->y, $thumbSize, $thumbSize, $this->cropWidth, $this->cropHeight); 
        }  

        function renderImage()
        {
            header('Content-type: image/jpeg');
            imagejpeg($this->thumb);
            imagedestroy($this->thumb); 
        }  
    }  
?>

Para Instanciar a classe, utilizaremos outro script php:

Arquivo: inc_cropimagem.php

<?php
    //Incluindo a classe
    include('cCropImage.php');

    //Capturando a imagem passada via get
    $src = $_GET['src'];

    if($src)
    {
        //Criando e renderizando a imagem
        $image = new cCropImage;
        $image->setImage($src);
        $image->createThumb();
        $image->renderImage();
    }
?>

E por fim, nosso arquivo que chamará e exibirá nossa imagem com o thumbnail gerado.

Arquivo: index.php

<?php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP Blog - Criando Thumbnails</title>
</head>

<body>
<span>Imagem Original:</span><br />
<img src="ovos.jpg">
<br /><br />
<span>Imagem Thumbnail:</span><br />
<img src="inc_cropimagem.php?src=ovos.jpg">
</body>
</html>
?>

Note que no src da imagem, passamos o arquivo inc_cropimagem.php e o parâmetro src que é a imagem original.

Pronto! Chega de mandar mais de uma imagem para o servidor.

Até !

Share Button

Deixe uma resposta

O seu endereço de email não será publicado.