Manipulando imagens com CakePHP
18 Dec 2012O Qimage (QuickImage) é um componente desenvolvido para o framework CakePHP (versão 2.x) cujo objetivo é facilitar a manipulação e o upload de imagens. Através dele é possível copiar imagens vindas através de upload, redimensionar, cortar e adicionar marca d’água em imagens.
Instalação
Basta copiar o arquivo QimageComponent.php para a pasta /app/Controller/Component/ da sua aplicação e incluir o nome ‘Qimage’ dentro do array de componentes do seu controller. Por exemplo:
public $components = array('Qimage');
Após isto você já pode chamar os métodos do componente, vamos a eles:
copy
Este método simplesmente copia a imagem informada (que deve ser um índice do array $_FILES) para o local informado no índice ‘path’ do array passado como parâmetro. Recebe um array onde os índices que devem ser informados são:
– $data[‘file’] -> array com os dados da imagem. Geralmente são os dados do array $_FILES. Por exemplo, se estamos fazendo o upload de um campo file com o nome ‘logo’, esse parâmetro deve ser o conteúdo de $_FILES[‘logo’].
– $data[‘path’] -> local onde a imagem deve ser salva.
Exemplo:
$this->Qimage->copy(array('file' => $_FILES['foto_1'], 'path' => '/img/fotos/'));
watermark
Este método irá adicionar a marca d’água, que estiver configurada na classe, na imagem informada. Recebe um array como parâmetro onde os dados que devem ser informados são:
– $data[‘file’] -> arquivo onde a marca d’água deve ser aplicada. A imagem da marca d’água fica definida na propriedade watermarkImage da classe.
Exemplo:
$this->Qimage->watermark(array('file' => '/img/foto1.png'));
crop
Este método corta uma determinada área da imagem. Recebe um array como parâmetro cujos índices desse array que serão necessários são:
– $data[‘file’] -> imagem que deve ser cortada.
– $data[‘output’] -> local onde o arquivo gerado deverá ser salvo. Será gerado um arquivo com o mesmo nome do arquivo de entrada, portanto, deve ser um diretório diferente do diretório do arquivo de entrada, caso contrário ele será sobreescrito.
– $data[‘w’] -> largura da área que será cortada.
– $data[‘h’] -> altura da área que será cortada.
– $data[‘x’] -> ponto x onde começará o corte da imagem.
– $data[‘y’] -> ponto y onde começará o corte da imagem.
Exemplo:
` $this->Qimage->crop(array(‘w’ => 400, ‘h’ => 300, ‘x’ => 100, ‘y’ => 100, ‘file’ => $file, ‘output’ => $path));`
resize
Este método é responsável por realizar o redimensionamento de uma imagem. Recebe um array como parâmetro cujos índices desse array que serão necessários são:
– $data[‘file’] -> imagem que deve ser redimensionada.
– $data[‘output’] -> local onde o arquivo gerado deverá ser salvo. Será gerado um arquivo com o mesmo nome do arquivo de entrada, portanto, deve ser um diretório diferente do diretório do arquivo de entrada, caso contrário ele será sobreescrito.
– $data[‘width’] -> largura que a imagem deve ser redimensionada.
– $data[‘height’] -> altura que a imagem deve ser redimensionada.
– $data[‘proporcional’] – > True ou false. se for true, redimensiona a imagem somente se as dimensões originais da imagem forem maiores que as informadas nos parâmetros.
Se somente a altura ou a largura for informada, o método calculará automaticamente o valor que falta para que a imagem fique proporcional.
Exemplo:
` $this->Qimage->resize(array(‘width’ => 240, ‘file’ => ‘/img/img1.jpg’, ‘output’ => ‘/img/thumbs/’));`
O download do componente pode ser feito AQUI.
Qualquer dúvida quanto ao uso ou ao funcionamento, basta entrar em contato.
Até a próxima 😉