Ao navegar em alguns fóruns, detectei uma dúvida frequente entre desenvolvedores que iniciam com o framework Codeigniter que é a manipulação de imagens.
Uma prática utilizada corriqueiramente é a redução das fotos por meio de funções que, após o upload da imagem, nos casos mais comuns, redimensionam as imagens para um proporção que se adeque à necessidade do usuário. Quando geramos essa nova imagem a um proporção fixa, a tarefa se torna simples, porém, quando ela tem que ser apresentada em várias resoluções, dimensionar diversas imagens se torna uma trabalho desgastante e sobre tudo desnecessário.
Uma alternativa para este “problema” é redimensionar por demanda, ou em outras palavras, manter a imagem original e manipular apenas a que será apresentada para o usuário, sem manter cópias duplicadas em seu diretório.
O Codeigniter por default traz em sua biblioteca a “Image Manipulation Class” (Classe para manipulação de imagens), que nos permite executar as seguintes ações:
- Redimensionar Imagens
- Criar miniaturas
- Cortar (Crop)
- Rotacionar
- Criar marca d’água
Vamos à prática! É bastante simples: criamos uma classe que utilizará a library citada acima.
class Imagens extends MX_Controller {
public function thumbs($imagem, $largura, $altura) {
$config['image_library'] = 'gd2';
$config['source_image'] = str_replace("-", "/", $imagem);
$config['maintain_ratio'] = true;
$config['dynamic_output'] = true;
$config['width'] = $largura;
$config['quality'] = "100%";
$config['height'] = $altura;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
}
}
A partir desta classe, podemos redimensionar a imagem desejada simplesmente passando os parâmetros, que é representado no source pela tag img, como 250/250, ou seja, altura e largura.
<img src="http://www.site.com.br/index.php/imagens/thumbs/arquivos-fotos-imagens-imagem.jpg/
250/250" />
Parâmetros da URL:
http://www.site.com.br/ ( Site )
index.php/
imagens/ ( Classe )
thumbs/ ( Método )
arquivos-fotos-imagens-imagem.jpg/ ( Caminho para a imagem separados por -)
250/250 ( Proporção altura e largura )
Realmente muito simples. Para mais informações, visite a documentação do Codeigniter.