Back-End

13 jun, 2012

Manipulação de imagens com o Codeigniter

Publicidade

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.