28
jan

Manipulando imagens com PHP

Boa noite a todos!


Estou desenvolvendo um site para uma instituição sem fins lucrativos – que dentro em breve estará na página Trabalhos – onde eu deveria criar uma galeria de fotos, então, resolvi deixar o maior trabalho para o sistema e não para o usuário, ou seja, a única ação do usuário seria escolher a foto e o sistema faria o redimensionamento, diminuiria a qualidade e faria um thumbnail.


Fiz algumas pesquisas e encontrei uma classe muito interessante que faz tudo parecer muito fácil, o nome da classe, como esperado, é “Thumbnail”! Clique aqui para conferir a página da classe.


Bom, depois de fazer o download, basta fazer um include da classe no seu código e começar a brincar com ela. Dentre várias coisas que ela faz, as mais interessantes são:


- Redimensionamento para um máximo de width e/ou height

- Redimensionamento por porcentagem do tamanho original

- Recorta a imagem a partir do centro dela

- Recorta a imagem

- Gira a imagem

- Cria um reflexo estilo Apple™


Aqui vai um exemplo da classe em funcionamento para que você possa entender melhor:


< ?php
include_once('thumbnail.inc.php');
$thumb = new Thumbnail('exemplo.jpg');
$thumb->resize(250,250);
$thumb->cropFromCenter(100);
$thumb->save('caminho/para/o/arquivo.jpg',80);
?>


Essas 5 linhas de código carregam a imagem, redimensionam para um máximo de 250px de width e 250px height, recortam um quadrado de 100px por 100px à partir do centro e salvam no local desejado com 80% de qualidade. Fantástico não? O resultado é um thumbnail perfeito!


Outras funções são as seguintes:


//Recortar a imagem
$thumb->crop(0,0,100,50);

//Girar a imagem em 90º em sentido horário
$thumb->rotateImage();

//Girar a imagem em 90º em sentido anti-horário
$thumb->rotateImage('CCW');

//Criar um reflexo estilo Apple™
$thumb->createReflection(40,40,80,true,'#a4a4a4');


Se você quer ver um exemplo da classe em ação, clique aqui.


Espero que esse post tenha sido útil.


Dúvidas? Utilize o campo de comentário logo abaixo.


Abraços!

10 comentários para “Manipulando imagens com PHP”

  1. Thiago Ducca disse:

    Parabens pelo código…

    aproveitando o que vc usa para mostrar os codigos…

    esse plugin, qual é o nome?

    abs

    Ducca

    Responder

  2. Pedro Teixeira disse:

    Olá Thiago,

    Obrigado pelo comentário!

    Esse é o dp.SyntaxHighlighter, muito bom!

    Dê uma olhada no site do projeto:

    http://www.dreamprojections.com/syntaxhighlighter

    Abraços!

    Responder

  3. Eliézer disse:

    Olá Pedro! Parabéns pelo post… Estou precisando d uma ajudinha para aplicar isso no meu script usando banco numa consulta sql (recordset), vc tem algum exemplo?
    Estava usando este anteriormente:
    $objDynamicThumb1 = new tNG_DynamicThumbnail("", "KT_thumbnail1");
    $objDynamicThumb1->setFolder("images/produtos/");
    $objDynamicThumb1->setRenameRule("{RsListaOfertas.foto}");
    $objDynamicThumb1->setResize(200, 160, true);
    $objDynamicThumb1->setWatermark(false);
    Mas quero usar com o giro…Obrigado

    Responder

  4. Pedro Teixeira disse:

    Olá Eliézer,

    Não entendi muito bem o que você está querendo. Você está usando a classe que passei no post?

    Abs!

    Responder

  5. Eliézer disse:

    Oi Pedro, 1º já agradeço pela atenção…Essa classe q eu estava usando é da extensão DeveloperToolBox do dreamweaver…Mas quero usar essa nova função para manipular melhor a imagem. Mas ainda ñ consegui saber como usa-la numa consulta SQL de um recordset do dreamweaver.
    Eu estava usando assim c/ a ADDT:

    //RECORDSET:
    mysql_select_db($database_adega_divino, $adega_divino);
    $query_RsListaOfertas = "SELECT /*AQUI OS CAMPOS*/ ORDER BY RAND()";
    $RsListaOfertas = mysql_query($query_RsListaOfertas, $adega_divino) or die(mysql_error());
    $row_RsListaOfertas = mysql_fetch_assoc($RsListaOfertas);
    $totalRows_RsListaOfertas = mysql_num_rows($RsListaOfertas);
    // Show Dynamic Thumbnail da ADDT:
    $objDynamicThumb1 = new tNG_DynamicThumbnail("", "KT_thumbnail1");
    $objDynamicThumb1->setFolder("images/produtos/");
    $objDynamicThumb1->setRenameRule("{RsListaOfertas.foto}");
    $objDynamicThumb1->setResize(200, 160, true);
    $objDynamicThumb1->setWatermark(false);
    //HTML:
    <img src="<?php echo $objDynamicThumb1->Execute(); ?>">

    A grande dúvida é como adaptar a sua nova função usando essa mesma consulta acima? Obrigado.

    Responder

  6. Pedro Teixeira disse:

    Eliézer,

    O que você pega no banco? O caminho da imagem, certo?

    Com o caminho dela é só fazer como está no post.

    Abraços!

    Responder

  7. Rodrigo disse:

    Parabéns sempre com ótimos artigos, sabendo que vc sempre colabora com seus leitores gostaria de aproveitar o espaço para ver se poderia postar um artigo sobre a manipulação de imagem com jcrop; consigo fazer o formulário para enviar a imagem registrar no banco de dados mas não consigo gravar a região selecionada….

    Responder

    Pedro Teixeira respondeu:

    @Rodrigo,

    Me desculpe mas ainda não tive a oportunidade de usar o Jcrop, mas deixei aqui como sugestão do post e quando surgir um tempo vou dar atenção para ele.

    Obrigado pela sugestão!

    Abraço!

    Responder

  8. Rodrigo disse:

    Blz…
    Essa semana tbm estou cheio de coisa e tive que abandonar ele, mas vou tentar na próxima semana e se funcionar mando pra vc…
    Acho que pra vc não terá muito segredo…
    Obrigado

    Responder

    Pedro Teixeira respondeu:

    @Rodrigo,

    Perfeito, se eu tiver um tempo te dou uma força.

    Abraço!

    Responder

Deixe um comentário