Añadir marcas de agua (watermarks) a imágenes con Laravel

Cuando tenemos un blog o una web, hay veces que queremos identificar las imágenes subidas a nuestro sitio añadiendoles el logo de éste. Esto se puede hacer manualmente con cualquier programa de edición de fotografías (Photoshop, GIMP, etc), pero se puede automatizar y es lo que vamos a ver. Hoy, vamos a ver cómo añadir marcas de agua a nuestras imágenes con Laravel y la libreria Intervention Image.

Primero de todo, lo que vamos a hacer va a ser instalar el paquete Intervention Image:

Una vez finalice, vamos a añadir el provider y facade al archivo config/app.php:

Publicamos el archivo de configuración del paquete, ejecutando el siguiente comando:

Veremos que se nos generará una archivo en config llamado image.php, ahí podremos indicar el driver que queramos utilizar. Podremos escoger entre «gd» o «imagick». Yo he escogido «imagick».

Ahora vamos a crear el controlador que añadirá la imagen que queramos en la posición que queramos a la imagen subida:

He creado dos métodos:

  • form: mostrar una vista con el formulario de subida de imágenes.
  • upload: generar la imagen nueva con la marca de agua y guardarla. Documentación del método insert.

Creamos la vista con el formulario:

Y finalmente creamos las rutas para los métodos anteriores:

Si accedemos desde el navegador a http://localhost:8080/form, veremos el formulario para subir imágenes. Vamos a probarlo:

Nota: La imagen que he escogido para la prueba es https://unsplash.com/photos/s05XKB6jK2c

Pero con el paquete Intervention Image, también podemos añadir texto. Para ello hay que cambiar el controlador y dejarlo así:

La documentación del método text se puede encontrar aquí.

Y el resultado sería:


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

Deja una respuesta

  Acepto la política de privacidad