Watermark de imagem

:information_source: Resumo Adiciona automaticamente marcas d’água a imagens enviadas pelos usuários
:hammer_and_wrench: Repositório GitHub - Arkshine/discourse-watermark-image · GitHub
:question: Guia de Instalação Como instalar um tema ou componente de tema
:open_book: Novo em Temas do Discourse? Guia para iniciantes no uso de Temas do Discourse

Instale este componente de tema

Descrição

Este componente de tema adiciona automaticamente marcas d’água a imagens enviadas pelos usuários. Você pode usar uma imagem ou um código QR como marca d’água, com opções extensas de personalização para posição, aparência e padrões de distribuição.

O componente oferece controle granular por meio de configurações de categoria e grupo de usuários, permitindo ajustar o comportamento da marca d’água às necessidades da sua comunidade.

Por favor, revise a seção Notas Importantes antes da implementação.

Recursos

  • Processamento de alto desempenho usando WebAssembly e Web Workers
  • Suporte abrangente a formatos de imagem (PNG, JPEG, BMP, ICO, TIFF, WEBP)
  • Geração dinâmica de marca d’água em código QR
  • Opções flexíveis de dimensionamento (relativo ou absoluto)
  • Sistema versátil de posicionamento
  • Personalização avançada de aparência (opacidade, rotação, escala, margem, etc.)
  • Múltiplos modos de mesclagem
  • Opções de distribuição de padrão (único, grade, diagonal, aleatório)
  • Configurações específicas por categoria e grupo de usuários
  • Pré-visualização ao vivo no painel de configurações

Configurações

Configuração Descrição
image A imagem a ser usada como marca d’água.
Formatos suportados: PNG, JPEG, BMP, ICO, TIFF, WEBP.
Padrão: ""
size_mode Como o tamanho da marca d’água é calculado:
- relative: O tamanho é relativo à largura da imagem de destino.
- absolute: Aplicado no tamanho original.
Padrão: "relative"
relative_width A largura da marca d’água relativa à largura da imagem de destino (em %).
Aplica-se apenas quando o modo de tamanho da marca d’água está definido como relative.
Faixa: 1-100
Padrão: 10
absolute_scale Fator de escala para o tamanho original da marca d’água (usado apenas no modo absoluto). Mínimo: 0.01
Padrão: 1
max_size Tamanho máximo como porcentagem das dimensões da imagem. Faixa: 1-100
Padrão: 50
position Posição da marca d’água: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right
Padrão: "bottom-right"
margin_x Margem horizontal da borda (em % da imagem de destino)
Padrão: 0
margin_y Margem vertical da borda (em % da imagem de destino)
Padrão: 0
opacity Opacidade da marca d’água. Faixa: 1-100
Padrão: 100
rotate Ângulo de rotação.
Faixa: -360 a 360 graus
Padrão: 0
blend_mode Como a marca d’água se mescla com a imagem: normal, overlay, over, atop, xor, plus, multiply, burn, difference, soft_light, screen, hard_light, dodge, exclusion, lighten, darken.
Padrão: "normal"
pattern Padrão de repetição da marca d’água: single, grid, diagonal, random
Padrão: "single"
pattern_allow_partial Permitir marcas d’água parciais nas bordas da imagem
Padrão: true
pattern_max_count Número máximo de repetições da marca d’água (0 para infinito)
Padrão: 50
pattern_spacing Espaçamento entre marcas d’água repetidas (em % da imagem de destino)
Padrão: 15
qrcode_enabled Habilitar marca d’água em código QR
Padrão: false
qrcode_text Texto a ser codificado no código QR. Suporta placeholders: {homepage}, {username}, {topic_url}
Padrão: ""
qrcode_color Cor do código QR (hex ou variável CSS)
Padrão: "var(--primary)"
qrcode_background_color Cor de fundo do código QR (hex ou variável CSS)
Padrão: "var(--secondary)"
qrcode_quiet_zone Largura da borda de espaço em branco ao redor do código QR (0-10 módulos)
Padrão: 2
qrcode_error_correction Nível de correção de erro: Low (~7%), Medium (~15%), Quarter (~25%), High (~30%)
Mais informações sobre níveis de correção de erro podem ser encontradas aqui.
Padrão: "Medium"
categories Categorias onde a marca d’água deve ser aplicada.
Padrão: ""
groups Grupos aos quais a marca d’água deve ser aplicada.
Padrão: "0"
skip_small_images Pular a aplicação de marca d’água se a imagem estiver abaixo de min_image_dimensions.
Padrão: false
min_image_dimensions Dimensões mínimas necessárias (largura x altura)
Padrão: "200x200"
allow_non_supported_uploads Permitir que uploads de imagem continuem mesmo quando o formato não for suportado
Padrão: false

Tipos de Marca D’água

Imagem

O componente suporta múltiplos formatos de imagem: PNG, JPEG, BMP, ICO, TIFF e WEBP.
Consulte a seção de FAQ para informações importantes sobre limitações de suporte a formatos.

Código QR

Gere códigos QR dinâmicos com conteúdo personalizável usando estas variáveis:

  • {homepage} - A URL da página inicial
  • {username} - O nome de usuário do usuário
  • {topic_url} - A URL do tópico

Importante: Ao estilizar marcas d’água em código QR, considere o contraste e o dimensionamento. Contrastes pobres ou estilização excessiva podem tornar os códigos QR ilegíveis. Sempre teste suas marcas d’água em código QR com aplicativos de leitura.

Pré-visualização em Tempo Real

O painel de configurações inclui um recurso de pré-visualização em tempo real, permitindo que você veja como sua configuração de marca d’água afeta uma imagem de amostra instantaneamente.
A janela de pré-visualização oferece vários recursos interativos:

  • Janela de pré-visualização redimensionável e movível
  • Opção para carregar uma imagem de amostra aleatória
  • Suporte para upload de suas próprias imagens de teste do seu dispositivo

No desktop, ela abre automaticamente. Você também pode abrir pelo botão na parte inferior da página:

Mais imagens



:warning: Notas Importantes

  • Imagens Originais Não São Preservadas
    As marcas d’água são aplicadas antes do upload no servidor, e as imagens originais não são retidas. Teste thoroughly suas configurações de marca d’água antes de implantar em produção.

  • Se estiver testando no painel de administração, tenha cuidado para não validar suas configurações imediatamente. Recomendo criar um grupo ou uma categoria para garantir a segurança.

FAQ

Por que os formatos de imagem são limitados?

Embora o Discourse converta todos os uploads para JPEG, esta marca d’água do TC ocorre antes do upload no formato original, usando bibliotecas específicas de processamento de imagem. Embora a marca d’água após o upload seja possível, exigiria múltiplos ciclos de upload/download e afetaria a experiência do compositor. Ainda estou explorando melhorias para este fluxo de trabalho.

Por que a marca d’água em texto não é suportada?

A marca d’água em texto exigiria opções extensas de configuração (seleção de fonte, estilização, etc.) que seriam difíceis de implementar efetivamente sem uma interface dedicada. Marcas d’água em imagem oferecem mais flexibilidade e podem ser criadas usando ferramentas de design existentes.

Roadmap

Planos de desenvolvimento futuros podem incluir:

  • Múltiplos perfis de marca d’água [1]
  • Preservação da imagem original [2]
  • Marca d’água após o upload

Créditos

Este componente de tema é impulsionado por:


  1. O input de upload é parcialmente suportado com o Tipo de configuração de objeto – não pode ser feito em um TC no momento. ↩︎

  2. Pode exigir desenvolvimento de plugin. ↩︎

24 curtidas

Esta é a primeira versão, e eu espero recursos ausentes. Estou ansioso por qualquer feedback! :+1:

7 curtidas

Obrigado pelo componente. Este componente processa imagens? Este componente comprime imagens para um tamanho melhor que o original.

5 curtidas

O componente não realiza nenhuma modificação ou compressão além da aplicação da marca d’água.

O Discourse já pré-processa a imagem primeiro (usando a biblioteca squoosh) → a marca d’água é aplicada → A imagem é carregada para o servidor. Seria assim que funciona.

6 curtidas


Na primeira vez que você abre uma postagem e a edita, não é possível adicionar uma marca d’água. É preciso publicá-la e, em seguida, clicar em editar postagem e carregar uma imagem para adicionar uma marca d’água.
O tema usado é FKB Pro - Social theme - #375 by MihirR

2 curtidas

Você quer dizer que se você abrir/editar uma postagem existente pela primeira vez e carregar uma imagem, não haverá marca d’água. Isso está correto? Você consegue reproduzir isso todas as vezes? Você vê algum erro no console do navegador?

Se eu entendi corretamente, você espera que uma imagem existente carregada (antes desta instalação do TC) tenha uma marca d’água quando você editar a postagem (ou tenha uma maneira de colocar marca d’água na imagem manualmente). Não funciona dessa maneira. Você precisa carregar a imagem para aplicar uma marca d’água.

Ter um botão para colocar marca d’água em uma imagem selecionada manualmente poderia ser um recurso. Isso funcionaria para você?

São as imagens carregadas após a criação de uma nova postagem que não têm marca d’água. São as imagens carregadas após entrar na postagem depois de publicar e clicar em editar que têm a marca d’água.

Para o botão de postagem, uso Compose Center - #13

Você pode fazer um vídeo rápido, por favor? Seria útil para ver e entender o que está acontecendo.

1 curtida

3 curtidas

Obrigado pela sua paciência! Encontrei o problema. Deve estar corrigido agora! :+1:

3 curtidas

Ocorreu um erro ao instalar este componente

Đã xảy ra lỗi: Error creating upload asset: worker_photon_wasm. Original filename Desculpe, o arquivo que você está tentando carregar não é autorizado (extensões autorizadas: jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, js, dwg).

1 curtida

Isso é estranho. Qual é a sua versão do Discourse?
Você pode tentar adicionar a extensão wasm às listas permitidas, mas funciona bem nas minhas duas instalações locais e de produção sem nenhuma alteração. :thinking:

1 curtida

Vou dar um feedback, não sei o que está acontecendo, mas parece que os usuários chineses não têm marcas d’água em suas imagens carregadas.

Mas estou usando uma conta recém-criada com o modo sem rastros ativado e está funcionando, então não sei qual é o problema.

Às vezes funciona, às vezes não.

As imagens que são removidas são .jpeg .png Mas, assim como a imagem no vídeo, copio a imagem e a carrego e ela tem marca d’água, então não sei qual é o problema.

Obrigado pelo feedback!

Para você, não importa como você tente, sempre funciona, certo?

Você pode pedir a alguns de seus usuários para verificarem o console do navegador se isso acontecer e copiarem qualquer mensagem de erro que virem para você? Além disso, se eles estão usando um dispositivo móvel (android, iphone, etc) - Se eles puderem explicar o que fizeram exatamente para ver se isso pode ajudar, seria bem-vindo.

Não parece ser um problema com a imagem em si se você puder aplicar a marca d’água na imagem mais tarde. O que resta é um erro no código, como o problema anterior, ou um erro no processo de marca d’água. Infelizmente, não consigo reproduzir, não importa o que eu faça.

Vou ver para atualizar o componente mais tarde para garantir que quaisquer erros sejam capturados e exibidos ao usuário.

Olá, obrigado por criar este componente.
Ao tentar carregar uma foto de marca d’água, recebi este erro. Tentei JPEG e Webp também, mas sem sucesso.

Meu fórum Discourse está atualizado

1 curtida

Olá @LaptechInfo

Isso é estranho. Neste ponto, o TC não deveria fazer nada. Esta é a configuração padrão de upload.
Você pode verificar o console do navegador e ver se há alguma mensagem de erro?

É possível fornecer uma imagem que falha para que eu possa testar do meu lado também?

1 curtida

Olá, tentei muitas imagens aleatoriamente, mas nenhuma delas funcionou.
Não sou programador, não tenho conhecimento em nenhuma linguagem de computador.
Tente esta imagem, eu tentei.
laptechinfo webp.zip (558 Bytes)
watermark.zip (257,7 KB)

@Arkshine

1 curtida

Obrigado! Você também pode mostrar o conteúdo do seu Console? A aba logo depois. Acho que pode ajudar.

EDIT: Acho que consigo reproduzir, deixe-me ver e volto em breve!

Guia do console


@Arkshine

@LaptechInfo Obrigado! Há um bug no Discourse de um PR de ontem. Criei um tópico: Can't upload image in settings. :+1:

3 curtidas