Actualizado: Tanto la clase como este post han sido actualizados a fecha 14 de enero de 2012.
Hace ya un tiempo publiqué (en inglés) un Componente para el tratamiento de imágenes en CakePHP. Hoy me he pasado un rato actualizándolo y aprovechando he decidido publicar una entrada con los cambios.
Aunque la he modificado considerablemente, he procurado no modificar el funcionamiento de ésta. Aquí vienen los cambios:
- He eliminado el uso del método obsoleto mime_content_type.
- Ahora utilizo la clase Exception para tratar los errores.
- He añadido el método "flip" para hacer espejo de la imagen.
- He limpiado el código y he arreglado algún que otro fallo.
- Ahora las transparencias funcionan correctamente.
Podéis descargar el proyecto desde GibHub:
https://github.com/elboletaire/Watimage/archives/master
Si queréis utilizar la clase desde CakePHP simplemente tenéis que descomentar la primera línea de la clase, donde dice //Component extends Object
, y utilizarlo como un componente cualquiera.
Aplicando marcas de agua
1 2 3 4 5 6 7 8 9 | <?php $wm = new Watermark(); $wm->setImage('test.png'); $wm->setWatermark(array('file' => 'watermark.png', 'position' => 'top right')); $wm->applyWatermark(); if (!$wm->generate('test1.png')) { // handle error... print_r($wm->errors); } |
Redimensionando
1 2 3 4 5 6 | $wm = new Watermark('test.png'); $wm->resize(array('type' => 'resizecrop', 'size' => array(400, 200))); if (!$wm->generate('test2.png')) { // handle error... print_r($wm->errors); } |
Rotando
1 2 3 4 5 6 | $wm = new Watermark('test.png'); $wm->rotate(90); if (!$wm->generate('test3.png')) { // handle error... print_r($wm->errors); } |
Guardando en otros formatos
1 2 3 4 5 | $wm = new Watermark('test.png'); if (!$wm->generate('test4.jpg')) { // handle error... print_r($wm->errors); } |
Espejo
1 2 3 4 5 6 | $wm = new Watermark('test.png'); $wm->flip('vertical'); if (!$wm->generate('test5.png')) { // handle error... print_r($wm->errors); } |
Todo junto
1 2 3 4 5 6 7 8 9 | $wm = new Watermark('test.png', 'watermark.png'); $wm->resize(array('type' => 'resizecrop', 'size' => 400)); $wm->flip('horizontal'); $wm->rotate(90); $wm->applyWatermark(); if (!$wm->generate('test6.png')) { // handle error... print_r($wm->errors); } |
Gracias a los comentarios de Francisco he podido arreglar la clase para que trate correctamente las transparencias.
Si véis cualquier fallo hacédmelo saber o haced un fork en github directamente!