Como utilizar a classe W3_Image
October 19th, 2007. Published under classe, image, php, w3_image. 5 Comments.
Em um artigo anterior apresentei a vocês a classe PHP W3_Image. Neste post, iremos conhecê-la com mais detalhes, descobrindo todo seu potencial. Vamos lá.
Em todos os métodos da W3_Image é preciso informar a imagem que será utilizada. Afinal, ela precisa saber com quem vai lidar. Porém, podemos simplificar este processo, evitando a necessidade de se informar a imagem toda vez que um método for utilizado.
Há duas formas de fazermos isto: através do construtor da classe ou do método set_image. Vejamos:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('fotos/planeta.jpg');
$objImg->set_image('http://static.php.net/www.php.net/images/php.gif');
?>
No exemplo acima, instanciamos a classe W3_Image e em seguida utilizamos o método set_image. Em ambos os casos, estamos informando uma imagem, e distintas uma da outra. Porém a imagem informada através do método set_image irá sobrepor a imagem informada pelo construtor da classe. Note que em ambos os casos, posso informar à classe a imagem que será utilizada.
Veremos agora como obter informações básicas de uma determinada imagem.
Como obter o mime-type de uma imagem
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('fotos/planeta.jpg');
$objImg->set_image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg->get_mime_type(); // Irá exibir image/gif
?>
Podemos simplificar; assim:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
echo $objImg->get_mime_type('http://static.php.net/www.php.net/images/php.gif'); // Irá exibir image/gif
?>
Como obter a extensão de uma imagem
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg->get_extension(); // Irá exibir gif
?>
Embora seja necessário informar uma imagem, este processo é muito flexível, fique atento a esse detalhe nos exemplos de uso demonstrados.
Como obter a largura e altura de uma imagem
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
$arrSizes = $objImg->get_sizes(); // Irá retornar um Array
print_r($arrSizes); // Irá imprimir Array ( [0] => 120 [1] => 67 [width] => 120 [height] => 67 )
?>
O método get_sizes da W3_Image retorna um Array super flexivo com a largura e altura da imagem. Tal Array pode ser acessado através dos índices 0 e 1 que retornam a largura e altura, respectivamente. Ou através de associações: width e height. Falei flexível?
Como obter somente a largura ou altura de uma imagem
Enquanto o método get_sizes retorna um Array com a largura e altura, o método get_sizex retorna a largura e o get_sizey retorna a altura. Intuitivo?
Exemplo de uso:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg->get_sizex(); // Irá exibir 120
echo $objImg->get_sizey(); // Irá exibir 67
?>
Como obter a largura e altura de uma imagem formatados para serem utilizados em uma tag IMG do HTML
É simples, veja só:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg->get_attr(); // Irá exibir width="120" height="67"
?>
Como exibir uma imagem no browser
Através do método show da W3_Image é possível exibir uma imagem no navegador com seu mime-type correto. Este método ainda finaliza a execução do script. Veja um exemplo de uso:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
$objImg->show(); // Irá exibir a imagem; logo do PHP
?>
Como forçar o download de uma imagem
Muitas pessoas tem dúvidas de como exibir a janela do navegador para que seja possível fazer o download de uma imagem. Utilizando a W3_Image é super simples. Observe:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
$objImg->download(); // Irá forçar o download da imagem; logo do PHP
?>
Como salvar uma imagem ou como fazer upload de uma imagem
Fazer upload de uma imagem ou salvá-la é muito, mas muito simples. Através do método save da W3_Image você pode salvar a imagem onde e como desejar. Observe:
<?php require_once 'class/W3_Image.class.php'; $objImg = new W3_Image; $imgTmp = $_FILES['image']['tmp_name']; $objImg->save($imgTmp); // Irá salvar a imagem no diretório atual. $objImg->save($imgTmp,'fotos/mamae.jpg'); // Irá salvar a imagem no diretório fotos como o nome mame.jpg ?>
Eu disse que é simples?
Como excluir uma imagem
Para excluir, deletar, remover uma imagem de um diretório, use o método delete. E pronto.
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg->delete('fotos-familia/sogra.jpg'); // Irá excluir a imagem da sogra. Coitada?
?>
Como criar uma imagem
É possível criar uma imagem a partir de uma outra já existente. Para isso, utilizamos o método create da W3_Image.
<?php require_once 'class/W3_Image.class.php'; $objImg = new W3_Image; $imgTmp = $_FILES['image']['tmp_name']; $objImg->create($imgTmp,400,300,'upload/foto.jpg',85); // Irá criar uma imagem... ?>
No exemplo acima, fizemos o seguinte: informarmos ao método create que iremos utilizar a imagem armazenada na variável $imgTmp para criarmos uma nova a partir dela; sendo que a imagem a ser criada terá no máximo 400 pixels de largura, 300 de altura, será salva no diretório upload, como o nome foto.jpg e terá 85% de qualidade aplicada sobre ela. Se esse último parâmetro não for informado, o valor padrão 75% é levado em consideração.
Como rotacionar uma imagem
Informe a imagem e a quantidade de graus a girá-la, que o método rotate da W3_Image faz o restante. Veja:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg->rotate('fotos-familia/sogra.jpg',180); // Irá girar a foto da sogra a 180 graus.
?>
Como aplicar filtros, efeitos em uma imagem
Através do método filter da W3_Image, podemos aplicar diversos tipos de efeitos em uma imagem, como por exemplo: negativo, tons de cinza, detectar bordas dentro da imagem, “emboss”, “gaussianblur”, “selectiveblur”, brilho, contraste, tons de sépia, entre outros.
Alguns efeitos não necessitam de informações adicionais para serem aplicados, apenas diga qual efeito e pronto. Outros precisam de informações para saberem como irão trabalhar. Vejamos alguns exemplos:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg->filter('foto.jpg','negate'); // Aplicar um filtro negativo
$objImg->filter('foto.jpg','grayscale'); // Aplicar um filtro de tons de cinza
$objImg->filter('foto.jpg','sepia'); // Aplicar um filtro de tom de sepia
$objImg->filter('foto.jpg','brightness',30); // Aplicar 30 de brilho sobre a imagem
?>
Observe os demais tipos de filtros na documentação da W3_Image.
Como utilizar e qual a vantagem do método set_image_name da W3_Image
O método set_image_name da W3_Image é muito útil ao se trabalhar com os métodos rotate e filter, uma vez que ao utilizá-lo a imagem original é mantida e uma nova é criada com o efeito aplicado. Exemplo:
<?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg->set_image_name('foto-negativa.jpg')->filter('foto.jpg','negate'); // Exemplo de uso do método set_image_name
?>
Ao utilizar o método set_image_name observe que utilizamos um encademanto de métodos, ou chaining (recurso conhecido entre aqueles quem utilizam a jQuery).
Ufa, finalizamos vários exemplos de uso de como utilizar a classe PHP W3_Image. Faça testes, envie-me seu feedback, consulte a documentação e até breve.
Um abraço.
5 Comments
Leandro Vieira on December 24th, 2007
Renan,
Certifique-se de ter instalado a biblioteca GD.
Um abraço.
Renan on December 25th, 2007
Olá, erro meu, estava usando a versão 0.1, agora baixei a 0.1.1 e está funcionado sem problema,
Ah, parabens pela class e um Feliz Natal! =]
Marcos de Paiva on May 22nd, 2008
Olá leandro,
comprei pelo tishop, o curso dreamweaver + php avançado.
Quando vou formatar a página noticia-cadastrar.php ocorre um erro na classe W3_image:
“Parse error: parse error, expecting `T_OLD_FUNCTION’ or `T_FUNCTION’ or `T_VAR’ or `’}” in”
achei que fosse a versão 0.1 e entao baixei a 0.1.1 e o mesmo erro porem em linhas diferentes….
detalhe que testei com a pasta projeto concluido..
fico no aguardo
Leandro Vieira on May 23rd, 2008
Oi Marcos,
Por favor, se tratando de suporte aos cursos, envie para meu e-mail ou siga as instrução de suporte informada no curso.
Quanto a sua dúvida, o erro acontece que a versão do seu PHP é a 4. A classe necessita da versão 5.
Abraços.
Renan on December 23rd, 2007
aew kra, boa classe, so nao ta funcionando os filtros, nenhum da certo, nem copiando do q se passo =/