| 摘要 | 自动为用户上传的图片添加水印 | |
| 代码仓库 | GitHub - Arkshine/discourse-watermark-image · GitHub | |
| 安装指南 | 如何安装主题或主题组件 | |
| Discourse 主题新手? | Discourse 主题使用入门指南 |
安装此主题组件
描述
此主题组件会自动为用户上传的图片添加水印。您可以使用图片或二维码作为水印,并提供丰富的自定义选项,包括位置、外观和分布模式。
该组件通过分类和用户组设置提供细粒度的控制,使您能够根据社区需求定制水印行为。
请在实施前查阅 重要说明 部分。
功能特性
- 利用 WebAssembly 和 Web Workers 实现高性能处理
- 全面支持多种图片格式(PNG、JPEG、BMP、ICO、TIFF、WEBP)
- 动态生成二维码水印
- 灵活的尺寸选项(相对或绝对)
- 多功能定位系统
- 高级外观自定义(不透明度、旋转、缩放、边距等)
- 多种混合模式
- 多种分布模式(单个、网格、对角线、随机)
- 针对特定分类和用户组的设置
- 设置面板中的实时预览
设置项
| 设置项 | 说明 |
|---|---|
image |
用作水印的图片。 支持的格式:PNG、JPEG、BMP、ICO、TIFF、WEBP。 默认值: "" |
size_mode |
水印尺寸的计算方式: - relative:尺寸相对于目标图片宽度。- absolute:按原始尺寸应用。默认值: "relative" |
relative_width |
水印宽度相对于目标图片宽度的百分比。 仅在水印尺寸模式设置为 relative 时生效。范围:1-100 默认值: 10 |
absolute_scale |
原始水印尺寸的缩放因子(仅在绝对模式下使用)。最小值:0.01 默认值: 1 |
max_size |
最大尺寸占图片尺寸的百分比。范围:1-100 默认值: 50 |
position |
水印位置:top-left、top-center、top-right、center-left、center、center-right、bottom-left、bottom-center、bottom-right默认值: "bottom-right" |
margin_x |
水平边距(占目标图片的百分比) 默认值: 0 |
margin_y |
垂直边距(占目标图片的百分比) 默认值: 0 |
opacity |
水印不透明度。范围:1-100 默认值: 100 |
rotate |
旋转角度。 范围:-360 到 360 度 默认值: 0 |
blend_mode |
水印与图片的混合模式:normal、overlay、over、atop、xor、plus、multiply、burn、difference、soft_light、screen、hard_light、dodge、exclusion、lighten、darken。默认值: "normal" |
pattern |
水印重复模式:single、grid、diagonal、random默认值: "single" |
pattern_allow_partial |
允许图片边缘出现部分水印 默认值: true |
pattern_max_count |
水印重复的最大数量(0 表示无限) 默认值: 50 |
pattern_spacing |
重复水印之间的间距(占目标图片的百分比) 默认值: 15 |
qrcode_enabled |
启用二维码水印 默认值: false |
qrcode_text |
二维码编码的文本。支持占位符:{homepage}、{username}、{topic_url}默认值: "" |
qrcode_color |
二维码颜色(十六进制或 CSS 变量) 默认值: "var(--primary)" |
qrcode_background_color |
二维码背景颜色(十六进制或 CSS 变量) 默认值: "var(--secondary)" |
qrcode_quiet_zone |
二维码周围的白色边框宽度(0-10 个模块) 默认值: 2 |
qrcode_error_correction |
纠错等级:Low(约 7%)、Medium(约 15%)、Quarter(约 25%)、High(约 30%)有关纠错等级的更多信息,请点击此处 默认值: "Medium" |
categories |
应用水印的分类。 默认值: "" |
groups |
应用水印的用户组。 默认值: "0" |
skip_small_images |
如果图片尺寸小于 min_image_dimensions,则跳过水印处理。默认值: false |
min_image_dimensions |
所需的最小尺寸(宽 x 高) 默认值: "200x200" |
allow_non_supported_uploads |
即使格式不受支持,也允许继续上传图片 默认值: false |
水印类型
图片
该组件支持多种图片格式:PNG、JPEG、BMP、ICO、TIFF 和 WEBP。
有关格式支持限制的详细信息,请参阅常见问题部分。
二维码
使用以下变量生成动态二维码,内容可自定义:
{homepage}- 主页 URL{username}- 用户名{topic_url}- 主题 URL
重要提示:在设计二维码水印时,请考虑对比度和尺寸。对比度过低或过度样式化可能导致二维码无法识别。请务必使用扫描应用程序测试您的二维码水印。
实时预览
设置面板包含实时预览功能,可让您即时查看水印配置对示例图片的影响。
预览窗口提供多种交互功能:
- 可调整大小和移动的预览窗口
- 可加载随机示例图片的选项
- 支持从您的设备上传测试图片
在桌面端,预览窗口会自动打开。您也可以点击页面底部的按钮打开:
重要说明
-
原始图片不会被保留
水印在服务器上传前应用,原始图片不会被保留。在部署到生产环境之前,请务必彻底测试您的水印设置。 -
如果在管理面板中进行测试,请小心不要立即验证您的设置。建议创建一个组或分类以确保安全。
常见问题
为什么图片格式有限制?
虽然 Discourse 会将所有上传转换为 JPEG,但此主题组件的水印处理是在上传前对原始格式进行的,使用了特定的图像处理库。虽然可以在上传后进行水印处理,但这需要多次上传/下载循环,并会影响编辑器体验。我仍在探索改进此工作流程的方法。
为什么不支持文本水印?
文本水印需要大量的配置选项(字体选择、样式等),如果没有专用界面,很难有效实现。图片水印提供了更大的灵活性,并且可以使用现有的设计工具创建。
开发路线图
未来的开发计划可能包括:
致谢
本主题组件由以下技术支持:














