A gestão das dimensões das imagens é por norma uma situação critica para quem desenvolve para a web, sobretudo para quem desenvolve websites.
O utilizador nem sempre tem possibilidade de fornecer as imagens no tamanho desejado, devido ao pouco / nenhum conhecimento de ferramentas de edição de imagem, ou simplesmente porque não quer ter esse “trabalho”.
Nestes casos, é da responsabilidade do programador implementar o(s) sistema(s) necessário(s) para que o redimensionamento das imagens seja feito automaticamente e sem necessidade de intervenção do utilizador.
Por norma a forma de efectuar estes redimensionamentos é básica e nem sempre com os resultados desejados, contudo, existe uma classe em PHP que permite que esta gestão do redimensionamento das imagens seja além de simples, bastante completa.
A classe que me refiro é: Resize Class de Jarrod Oberto
Como sei que alguns programadores que visitam o Ppleware ainda são júniores e ainda não têm conhecimentos de programação orientada a objectos, a explicação que darei do uso desta classe será apenas da forma como é implementada.
A parte 1 será sem upload de imagem.
Comecemos por fazer download da classe. Podem fazer o download aqui.
A implementação da classe é extremamente simples. Começamos por incluir a Classe.
include("resize-class.php");
1) Depois instanciámos a classe e indicamos qual a imagem a redimensionar
$resizeObj = new resize('exemplo.jpg');
2) Aqui é onde a “magia” acontece:
Indicámos qual a medida que queremos 150 largura e 100 de altura, e definimos qual o comportamento da classe
Existem 5 opções possíveis:
- exact: que corta a imagem exactamente na medida definida
- portrait: redimensiona a imagem e “pára” o redimensionamento quando encontra a medida da altura (100)
- landscape: redimensiona a imagem e “pára” o redimensionamento quando encontra a medida da largura (150)
- auto: redimensiona a imagem e pára quando encontra uma das medidas definidas (altura ou largura)
- crop: redimensiona a imagem e corta na medida escolhida sem qualquer tipo de distorção.
$resizeObj -> resizeImage(150, 100, 'auto');
3) Guarda a imagem e define qual a qualidade que terá (de 0 a 100).
$resizeObj -> saveImage('exemplo-redimensionado.jpg', 100);
Como podem verificar é extremamente simples a utilização da classe. O tratamento de imagens na web fica bastante mais simplificado.
No próximo tutorial (parte 2) irei explicar como podemos efectuar o upload e redimensionar para mais do que um tamanho.