Marca de agua en la imagen

:information_source: Resumen Añade automáticamente marcas de agua a las imágenes subidas por los usuarios
:hammer_and_wrench: Repositorio GitHub - Arkshine/discourse-watermark-image · GitHub
:question: Guía de instalación Cómo instalar un tema o componente de tema
:open_book: ¿Nuevo en los temas de Discourse? Guía para principiantes sobre el uso de temas en Discourse

Instalar este componente de tema

Descripción

Este componente de tema añade automáticamente marcas de agua a las imágenes subidas por los usuarios. Puedes utilizar tanto una imagen como un código QR como marca de agua, con amplias opciones de personalización para la posición, apariencia y patrones de distribución.

El componente ofrece un control granular a través de configuraciones por categoría y grupo de usuarios, lo que te permite adaptar el comportamiento de la marca de agua a las necesidades de tu comunidad.

Por favor, revisa la sección Notas importantes antes de implementarlo.

Características

  • Procesamiento de alto rendimiento utilizando WebAssembly y Web Workers
  • Soporte integral para formatos de imagen (PNG, JPEG, BMP, ICO, TIFF, WEBP)
  • Generación dinámica de marcas de agua en código QR
  • Opciones de tamaño flexibles (relativo o absoluto)
  • Sistema de posicionamiento versátil
  • Personalización avanzada de la apariencia (opacidad, rotación, escala, margen, etc.)
  • Múltiples modos de fusión
  • Opciones de distribución de patrones (único, cuadrícula, diagonal, aleatorio)
  • Configuraciones específicas por categoría y grupo de usuarios
  • Vista previa en tiempo real en el panel de configuración

Configuración

Configuración Descripción
image La imagen a utilizar como marca de agua.
Formatos admitidos: PNG, JPEG, BMP, ICO, TIFF, WEBP.
Valor predeterminado: ""
size_mode Cómo se calcula el tamaño de la marca de agua:
- relative: El tamaño es relativo al ancho de la imagen de destino.
- absolute: Se aplica en su tamaño original.
Valor predeterminado: "relative"
relative_width El ancho de la marca de agua relativo al ancho de la imagen de destino (en %).
Solo se aplica cuando el modo de tamaño de la marca de agua está establecido en relative.
Rango: 1-100
Valor predeterminado: 10
absolute_scale Factor de escala para el tamaño original de la marca de agua (solo se usa en modo absoluto). Mínimo: 0.01
Valor predeterminado: 1
max_size Tamaño máximo como porcentaje de las dimensiones de la imagen. Rango: 1-100
Valor predeterminado: 50
position Posición de la marca de agua: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right
Valor predeterminado: "bottom-right"
margin_x Margen horizontal desde el borde (en % de la imagen de destino)
Valor predeterminado: 0
margin_y Margen vertical desde el borde (en % de la imagen de destino)
Valor predeterminado: 0
opacity Opacidad de la marca de agua. Rango: 1-100
Valor predeterminado: 100
rotate Ángulo de rotación.
Rango: -360 a 360 grados
Valor predeterminado: 0
blend_mode Cómo se fusiona la marca de agua con la imagen: normal, overlay, over, atop, xor, plus, multiply, burn, difference, soft_light, screen, hard_light, dodge, exclusion, lighten, darken.
Valor predeterminado: "normal"
pattern Patrón de repetición de la marca de agua: single, grid, diagonal, random
Valor predeterminado: "single"
pattern_allow_partial Permitir marcas de agua parciales en los bordes de la imagen
Valor predeterminado: true
pattern_max_count Número máximo de repeticiones de la marca de agua (0 para infinito)
Valor predeterminado: 50
pattern_spacing Espaciado entre marcas de agua repetidas (en % de la imagen de destino)
Valor predeterminado: 15
qrcode_enabled Habilitar marca de agua en código QR
Valor predeterminado: false
qrcode_text Texto a codificar en el código QR. Admite marcadores de posición: {homepage}, {username}, {topic_url}
Valor predeterminado: ""
qrcode_color Color del código QR (hex o variable CSS)
Valor predeterminado: "var(--primary)"
qrcode_background_color Color de fondo del código QR (hex o variable CSS)
Valor predeterminado: "var(--secondary)"
qrcode_quiet_zone Ancho del borde de espacio en blanco alrededor del código QR (0-10 módulos)
Valor predeterminado: 2
qrcode_error_correction Nivel de corrección de errores: Low (~7%), Medium (~15%), Quarter (~25%), High (~30%)
Más información sobre los niveles de corrección de errores se puede encontrar aquí.
Valor predeterminado: "Medium"
categories Categorías donde se debe aplicar la marca de agua.
Valor predeterminado: ""
groups Grupos a los que se debe aplicar la marca de agua.
Valor predeterminado: "0"
skip_small_images Omitir la marca de agua si la imagen está por debajo de min_image_dimensions.
Valor predeterminado: false
min_image_dimensions Dimensiones mínimas requeridas (ancho x alto)
Valor predeterminado: "200x200"
allow_non_supported_uploads Permitir que las subidas de imágenes continúen incluso si el formato no es compatible
Valor predeterminado: false

Tipos de marca de agua

Imagen

El componente admite múltiples formatos de imagen: PNG, JPEG, BMP, ICO, TIFF y WEBP.
Consulta la sección de preguntas frecuentes para obtener información importante sobre las limitaciones de soporte de formatos.

Código QR

Genera códigos QR dinámicos con contenido personalizable utilizando estas variables:

  • {homepage} - La URL de la página de inicio
  • {username} - El nombre de usuario del usuario
  • {topic_url} - La URL del tema

Importante: Al diseñar marcas de agua en código QR, considera el contraste y el tamaño. Las relaciones de contraste deficientes o un estilo excesivo pueden hacer que los códigos QR sean ilegibles. Siempre prueba tus marcas de agua en código QR con aplicaciones de escaneo.

Vista previa en tiempo real

El panel de configuración incluye una función de vista previa en tiempo real, que te permite ver instantáneamente cómo afecta tu configuración de marca de agua a una imagen de muestra.
La ventana de vista previa ofrece varias funciones interactivas:

  • Ventana de vista previa redimensionable y movible
  • Opción para cargar una imagen de muestra aleatoria
  • Soporte para subir tus propias imágenes de prueba desde tu dispositivo

En el escritorio, se abre automáticamente. También puedes abrirla desde el botón en la parte inferior de la página:

Más imágenes



:warning: Notas importantes

  • Las imágenes originales no se conservan
    Las marcas de agua se aplican antes de la subida al servidor y las imágenes originales no se retienen. Prueba exhaustivamente tu configuración de marca de agua antes de implementarla en producción.

  • Si estás probando en el panel de administración, ten cuidado de no validar tu configuración inmediatamente. Recomiendo crear un grupo o una categoría para estar seguro.

Preguntas frecuentes

¿Por qué están limitados los formatos de imagen?

Aunque Discourse convierte todas las subidas a JPEG, esta marca de agua del TC ocurre antes de la subida en el formato original, utilizando bibliotecas específicas de procesamiento de imágenes. Aunque es posible la marca de agua después de la subida, requeriría múltiples ciclos de subida/descarga y afectaría la experiencia del compositor. Todavía estoy explorando mejoras en este flujo de trabajo.

¿Por qué no se admite la marca de agua de texto?

La marca de agua de texto requeriría opciones de configuración extensas (selección de fuentes, estilo, etc.) que serían difíciles de implementar de manera efectiva sin una interfaz dedicada. Las marcas de agua de imagen ofrecen más flexibilidad y se pueden crear utilizando herramientas de diseño existentes.

Hoja de ruta

Los planes de desarrollo futuro pueden incluir:

  • Múltiples perfiles de marca de agua [1]
  • Conservación de la imagen original [2]
  • Marca de agua después de la subida

Créditos

Este componente de tema está impulsado por:


  1. La entrada de subida está parcialmente compatible con el tipo de configuración de objeto – no se puede hacer en un TC en este momento. ↩︎

  2. Puede requerir desarrollo de plugins. ↩︎

24 Me gusta

Esta es la primera versión y espero que falten funciones. ¡Espero sus comentarios! :+1:

7 Me gusta

Gracias por el componente. ¿Procesa imágenes este componente? ¿Comprime este componente las imágenes a un tamaño mejor que el original?

5 Me gusta

El componente no realiza ninguna modificación ni compresión aparte de aplicar la marca de agua.

Discourse ya preprocesa la imagen primero (usando la biblioteca squoosh) → se aplica la marca de agua → La imagen se sube al servidor. Así es como funcionaría.

6 Me gusta


La primera vez que abres una publicación y la editas, no puedes ponerle una marca de agua, necesitas publicarla y luego hacer clic en editar publicación y subir una imagen para ponerle una marca de agua.
El tema utilizado es FKB Pro - Social theme - #375 by MihirR

2 Me gusta

¿Quieres decir que si abres/editas una publicación existente por primera vez y subes una imagen, no hay marca de agua. ¿Es correcto? ¿Puedes reproducirlo siempre? ¿Ves algún error en la consola del navegador?

Si entiendo correctamente, esperas que una imagen existente subida (antes de esta instalación de TC) tenga una marca de agua cuando editas la publicación (o tengas una forma de añadir una marca de agua a la imagen manualmente). No funciona de esa manera. Necesitas subir la imagen para aplicar una marca de agua.

Tener un botón para añadir una marca de agua a una imagen seleccionada manualmente podría ser una característica. ¿Te funcionaría eso?

Son las imágenes subidas después de crear una nueva publicación las que no tienen marca de agua. Son las imágenes subidas después de entrar en la publicación después de publicar y hacer clic en editar las que tienen la marca de agua.

Para el botón de publicación, utilizo Compose Center - #13

¿Puedes hacer un video rápido, por favor? Sería útil para ver y entender lo que está pasando.

1 me gusta

3 Me gusta

¡Gracias por tu paciencia! He encontrado el problema. ¡Ya debería estar solucionado! :+1:

3 Me gusta

Me da este error al instalar este componente

Đã xảy ra lỗi: Error creating upload asset: worker_photon_wasm. Original filename Lo sentimos, el archivo que intentas subir no está autorizado (extensiones autorizadas: jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, js, dwg).

1 me gusta

Eso es extraño. ¿Cuál es tu versión de Discourse?
Puedes intentar agregar la extensión wasm en las listas permitidas, pero funciona bien en mis instalaciones locales y en dos instalaciones de producción sin ningún cambio. :thinking:

1 me gusta

Voy a darte algunos comentarios, no sé qué está pasando, pero parece que los usuarios chinos no tienen marcas de agua en sus imágenes subidas.

Pero estoy usando una cuenta recién creada con ese modo sin rastro activado y está funcionando, así que no sé cuál es el problema.

A veces funciona, a veces no.

Las imágenes que se eliminan son .jpeg .png Pero al igual que la imagen del video, copio la imagen y la subo y tiene marca de agua, así que no sé cuál es el problema.

¡Gracias por tus comentarios!

Para ti, no importa cómo lo intentes, siempre funciona, ¿verdad?

¿Puedes pedir a algunos de tus usuarios que revisen la consola del navegador si sucede y te copien cualquier mensaje de error que vean? También, si están usando un dispositivo móvil (android, iphone, etc.) - Si pueden explicar qué hicieron exactamente para ver si puede ayudar, sería bienvenido.

No parece ser un problema con la imagen en sí si puedes agregar una marca de agua a la imagen tú mismo más tarde. Lo que queda es un error en el código, como el problema anterior, o un error en el proceso de marca de agua. Desafortunadamente, no puedo reproducirlo sin importar lo que haga.

Me aseguraré de actualizar el componente más tarde para garantizar que se capturen y se muestren al usuario todos los errores.

Hola, gracias por crear este componente.
Cuando intenté subir la foto de la marca de agua, aparece este error. Probé con JPEG y Webp también, pero todavía no tuve suerte.

Mi foro de Discourse está actualizado

1 me gusta

Hola @LaptechInfo

Eso es extraño. En este punto, el TC no debería hacer nada. Esta es la configuración de carga estándar.
¿Puedes mirar la consola del navegador y ver si hay algún mensaje de error?

¿Es posible que proporciones una imagen que falle para que yo también pueda probarla?

1 me gusta

Hola, probé muchas imágenes al azar, pero ninguna funcionó.
No soy programador, no tengo conocimientos de ningún lenguaje informático.
Prueba esta imagen, lo intenté.
laptechinfo webp.zip (558 Bytes)
watermark.zip (257.7 KB)

@Arkshine

1 me gusta

¡Gracias! ¿Puedes también mostrar el contenido de tu consola? La pestaña justo después. Creo que podría ayudar.

EDITAR: Creo que puedo reproducirlo, déjame ver y te responderé pronto.

Pestaña de consola


@Arkshine

@LaptechInfo ¡Gracias! Hay un error en Discourse de una PR de ayer. Creé un tema: Can't upload image in settings. :+1:

3 Me gusta