# 所有上传图片的水印

**URL:** <https://meta.discourse.org/t/watermark-on-all-upload-images/174534>\
**Category:** Feature\
**Created:** [2020年十二月29日 20:39 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534 "2020-12-29T20:39:37Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![lhkjacky](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lhkjacky/32/204198_2.png) [@lhkjacky](https://meta.discourse.org/u/lhkjacky)\
**Post date:** [2020年十二月29日 20:39 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/1 "2020-12-29T20:39:37Z")

</div>

各位 Discourse 开发者：

我想感谢所有 Discourse 开发者，你们出色的工作打造了世界上最好的论坛。🥰 就我个人而言，在过去 10 年中，我使用过 Discuz 和 Buddyboss（WordPress）等其他程序来搭建多个论坛，但没有一个能像 Discourse 这样出色。

Discourse 唯一缺失的功能是水印功能。如果 Discourse 支持在所有上传的图片上添加水印，那就完美了。这不需要像论坛中某些用户建议的那样极其复杂。（我理解开发者为何忽略他们的请求，因为那完全不切实际。）

* * *

依我之见，一个非常简单的功能就足够了。在每张上传的图片上添加一个图标或文本，只需让他人知道，当有人将您的图片 **分享** （或窃取）到其他网站/平台时，该图片源自我的论坛。

就我个人而言，我总是在上传到论坛之前自己添加水印，但许多社区成员并不愿意这样做，尤其是当他们使用智能手机发布图片时，他们希望论坛能自动添加。

我理解 Discourse 最初是设计为更偏向文本的论坛，而不是像摄影论坛那样包含大量图片的论坛。但得益于许多优秀的插件/主题代码（TC），我可以用 Discourse 很好地构建一个面向摄影的论坛。

* * *

我建议在以下位置添加一个水印图片上传框：  
/admin/site\_settings/category/branding

 ![2020-12-30_035510](https://global.discourse-cdn.com/meta/original/3X/a/4/a4129e01917e0f470202b66109368ba1d6c85927.jpeg)

并在以下位置添加一个选择按钮：  
/admin/site\_settings/category/files  
 ![2020-12-30_042258](https://global.discourse-cdn.com/meta/original/3X/4/8/4845fc29bfc6aa7f3294be2989f22728ceaebf03.jpeg)

以及一个用于选择水印位置的下拉菜单，类似于：

 ![2020-12-30_042407](https://global.discourse-cdn.com/meta/original/3X/f/7/f7289b504abe44da27ce617574601589fd43422b.jpeg)

这样就已经足够了，不需要其他花哨的功能。  
其他功能，如缩放、透明度、备份原始图片等，虽然很棒，但并非必要。

最后，我想再次感谢所有 Discourse 开发者的持续辛勤工作。  
谢谢，新年快乐~!😘

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2020年十二月29日 22:46 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/2 "2020-12-29T22:46:53Z")

</div>

谢谢 Jacky，听起来这是一个值得有人尝试的有趣插件。不过，我认为我们不会将其作为核心功能，但核心部分当然可以协助该插件的开发。

如果您有预算，我建议您在 #Marketplace 中发布需求。我估计，一个最小化的原型插件（配置极简，仅需提供文本）大约需要 1 到 2 天即可完成开发。

而通过叠加图像添加水印的功能，可能需要稍长一些的时间才能完善。

---

<div class="post-metadata">

**Author:** ![lhkjacky](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lhkjacky/32/204198_2.png) [@lhkjacky](https://meta.discourse.org/u/lhkjacky)\
**Post date:** [2021年二月22日 11:43 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/3 "2021-02-22T11:43:48Z")

</div>

经过一些尝试，我找到了一个临时的“解决方案”来处理水印问题。🥳

以防万一其他人也有兴趣，我想分享一下我的变通方法。希望这能帮到大家。🥰

1. 首先，我在另一个子域名上安装了 Chevereto（免费版）。  
（非常简单，只需将 installer.php 文件上传到服务器，打开页面并按照提示设置即可。几分钟就能完成。）😘

2. 免费版也支持水印功能，你可以在仪表盘的图像上传设置中进行配置。  

 ![2021-02-22_190436](https://global.discourse-cdn.com/meta/original/3X/0/1/01bdad79ad8e33bcc3f7683e99a1c80555de993f.png)

你还可以在仪表盘中设置图像的最大宽度和高度，这样所有上传的大图都会自动调整大小。

1. 将 Chevereto 插件（脚本）添加到 Discourse 的 `<head>` 标签中：  
`<script async src="https://img.example.com/sdk/pup.js" data-url="https://img.example.com/upload"></script>`

2. [Discourse 似乎不再支持带有 fa-icon 的 i 标签](https://meta.discourse.org/t/introducing-font-awesome-5-and-svg-icons/101643)，因此我不得不修改 JavaScript 代码，将：  
`<i class="fa fa-cloud-upload d-icon d-icon-upload"></i>`  
改为：  
`<svg class="fa d-icon d-icon-cloud-upload-alt svg-icon svg-node" aria-hidden="true"><use xlink:href="#cloud-upload-alt"></use></svg>`

3. 如果一切设置正确，Discourse 编辑器中将会显示一个云上传图标。  

4. 只需点击新图标，将图像拖放到弹出窗口中，它会自动上传并将带水印的代码粘贴到编辑器中。🥳

5. 目前在桌面端运行完美。但我仍在研究如何将图标添加到智能手机上。🤔 如果我找到方法，会更新这篇帖子。

这只是一个临时的变通方案，并不完美，但可以在几分钟内轻松实现。我仍然希望 Discourse 未来能在核心功能或通过插件/主题组件（TC）中直接添加水印支持。

---

<div class="post-metadata">

**Author:** ![Paracelsus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paracelsus/32/164912_2.png) [@Paracelsus](https://meta.discourse.org/u/Paracelsus)\
**Post date:** [2021年二月22日 11:53 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/4 "2021-02-22T11:53:55Z")

</div>

这看起来不错。如果能有一个包含所有这些功能的主题组件，仅将 Chevereto 的安装作为手动步骤，那就太好了。

---

<div class="post-metadata">

**Author:** ![lhkjacky](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lhkjacky/32/204198_2.png) [@lhkjacky](https://meta.discourse.org/u/lhkjacky)\
**Post date:** [2021年二月23日 08:35 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/5 "2021-02-23T08:35:28Z")

</div>

> [@lhkjacky](#):
>
> 7，现在在桌面端运行完美。但我仍在研究如何将图标添加到智能手机上。🤔 如果我找到了方法，我会更新此帖子。

我对 Chevereto 插件的 JavaScript 进行了一些修改。

将  
`sibling: ".upload.btn", siblingPos:"before",`  
更改为  
`sibling:".code.btn",siblingPos:"after",`

现在，图标在桌面端和智能手机上都能显示。🥳

---

<div class="post-metadata">

**Author:** ![tachibanalolo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tachibanalolo/32/233762_2.png) [@tachibanalolo](https://meta.discourse.org/u/tachibanalolo)\
**Post date:** [2021年十一月30日 15:12 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/6 "2021-11-30T15:12:14Z")

</div>

太棒了！它有实现相同目标的插件吗？

---

<div class="post-metadata">

**Author:** ![f1r4s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/f1r4s/32/245347_2.png) [@f1r4s](https://meta.discourse.org/u/f1r4s)\
**Post date:** [2022年二月20日 11:53 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/7 "2022-02-20T11:53:23Z")

</div>

如果有一个用于此水印的组件会更好。

---

<div class="post-metadata">

**Author:** ![microhit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/microhit/32/447960_2.png) [@microhit](https://meta.discourse.org/u/microhit)\
**Post date:** [2023年十月26日 15:44 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/8 "2023-10-26T15:44:26Z")

</div>

有人能告诉我图片保存在哪个文件夹吗？

我希望批量为它们添加水印的一种方法是运行外部图像编辑工具。

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2024年三月1日 13:19 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/9 "2024-03-01T13:19:44Z")

</div>

有人能够使用最新的 3.2 discourse 实现这一点吗？

---

<div class="post-metadata">

**Author:** ![Heliosurge](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/heliosurge/32/571810_2.png) [@Heliosurge](https://meta.discourse.org/u/Heliosurge)\
**Post date:** [2024年三月1日 18:08 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/10 "2024-03-01T18:08:46Z")

</div>

这个挺酷的。你可能也会对这个 #Customization > Theme component 感兴趣：

> [@Discourse 网页水印](https://meta.discourse.org/t/discourse-web-page-watermark/214108):
>
> 此主题组件将水印添加到页面。 可以添加以下任何信息： 一条简短的文本消息 当前登录的用户名 页面渲染的时间戳 几个设置允许自定义水印的渲染方式和时间： show\_watermark\_in\_background：如果启用，将在页面上生成并显示水印。 scroll\_enabled：如果启用，水印将随页面滚动。 only\_in\_categories：应显示水印的类别列表。 except\_in\_categories：不应显示水印的类别列表。 only\_in\_tags：应显示水印的标签列表。 except\_in\_tags：不应显示水印的标签列表。 if\_site\_title\_matches：仅当站点标题与此正则表达式匹配时才显示水印。有关用例，请参阅 [Discourse Web Page Watermark - #5 by pfaffman](https://meta.discourse.org/t/discourse-web-page-watermark/214108/5?u=megothss) 。 or\_if\_url\_matches：或如果 URL 匹配列表中的任何正则表达式，则显示水印。请注意，测试的 URL 不包含主机名。 tile\_width: 包含水印信息的图块的宽度（以像素为单…

---

<div class="post-metadata">

**Author:** ![Arkshine](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arkshine/32/298682_2.png) [@Arkshine](https://meta.discourse.org/u/Arkshine)\
**Post date:** [2024年三月2日 02:29 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/11 "2024-03-02T02:29:58Z")

</div>

我在一个主题组件中试了一下。它只是一个概念验证，所以很基础。😄  
每次上传都会自动应用水印。

从技术角度来看，就像 Discourse 在上传前预处理图像（例如压缩）一样，这个工具通过添加水印也做了同样的事情。得益于 API 和 Uppy 库，添加水印很容易实现。🙏

如果您有任何想要考虑为最低要求的特性/自定义，请告诉我。🙂

编辑：一旦我实现了基本设置，就会发布一个版本。

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2024年三月20日 22:11 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/12 "2024-03-20T22:11:42Z")

</div>

> [@Arkshine](#):
>
> 编辑：我将在实现基本设置后尽快发布一个版本。

❤ ❤ ❤  
史诗般的工作！如果您需要任何测试人员，请告诉我。

---

<div class="post-metadata">

**Author:** ![Mr.X\_Mr.X](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mr.x_mr.x/32/126610_2.png) [@Mr.X\_Mr.X](https://meta.discourse.org/u/Mr.X_Mr.X)\
**Post date:** [2024年四月6日 09:22 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/13 "2024-04-06T09:22:43Z")

</div>

嘿，这个可以上线生产环境了吗？我很有兴趣。

---

<div class="post-metadata">

**Author:** ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)\
**Post date:** [2024年四月6日 09:37 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/14 "2024-04-06T09:37:20Z")

</div>

在什么情况下，在所有图片上打印水印既合适又合法？

---

<div class="post-metadata">

**Author:** ![Monikas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/monikas/32/375316_2.png) [@Monikas](https://meta.discourse.org/u/Monikas)\
**Post date:** [2024年四月6日 10:10 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/15 "2024-04-06T10:10:17Z")

</div>

这可以上线生产了吗？

> [@Mr.X\_Mr.X](#):
>
> 这可以上线生产了吗

---

<div class="post-metadata">

**Author:** ![Arkshine](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arkshine/32/298682_2.png) [@Arkshine](https://meta.discourse.org/u/Arkshine)\
**Post date:** [2025年一月14日 21:22 UTC](https://meta.discourse.org/t/watermark-on-all-upload-images/174534/16 "2025-01-14T21:22:06Z")

</div>

抱歉，我来晚了。😅  
如果您还有兴趣，我在这里发布了一个 TC：[https://meta.discourse.org/t/watermark-image/347138。欢迎任何反馈！](https://meta.discourse.org/t/watermark-image/347138%E3%80%82%E6%AC%A2%E8%BF%8E%E4%BB%BB%E4%BD%95%E5%8F%8D%E9%A6%88%EF%BC%81)
