WordPress 不同图片尺寸使用不同水印:现状与可靠方案

WordPress 不同图片尺寸使用不同水印:现状与可靠方案

同一张原图在缩略图、中图和大图中使用不同水印,核心不是“装两个水印插件”,而是为每个派生尺寸定义可重复的图片处理策略。原文推荐的 Awesome Watermark 已多年没有维护,不适合继续作为生产方案。

先说明旧插件现状

WordPress.org 当前信息显示,Awesome Watermark 仍停留在 1.0,最后更新于 2015 年,测试版本也停留在 WordPress 4.2 系列。它可以作为历史实现参考,但在现代 WordPress 与 PHP 环境中直接启用存在兼容和安全风险。

不要因为它“恰好支持多个尺寸”就跳过源码审计、暂存测试和备份。

正确拆分需求

先确认以下规则:

  • 原始上传文件是否必须保持无水印。
  • 哪些 WordPress 图片尺寸用于哪些页面。
  • 每个尺寸的水印图片、边距、透明度和位置。
  • 旧图片是否需要批量重新生成。
  • 删除水印后能否从原图重新生成干净版本。
  • CDN、对象存储和本地媒体库谁是派生图事实源。
  • GIF、SVG、WebP、AVIF 和带透明通道图片如何处理。

建议始终保留原图。水印应施加在派生图或交付副本上,否则规则变化后只能从备份恢复。

方案一:对象存储或图片 CDN 动态处理

如果图片已经使用支持样式处理的对象存储/CDN,可以为缩略图、中图和大图建立命名样式:

avatar-thumb-watermark
product-card-watermark
product-detail-watermark

模板只请求对应样式 URL。优点是:

  • 原图保持不变。
  • 修改规则后无需重新上传所有媒体。
  • 转码、缩放和水印可以在一次处理链完成。
  • 更容易限制输出尺寸并缓存。

需要确认签名、防盗链、缓存失效和供应商迁移策略。不要在前端公开包含管理权限的签名密钥。

方案二:上传后生成派生文件

WordPress 可先注册业务尺寸:

<?php
add_action(
    'after_setup_theme',
    function (): void {
        add_image_size(
            'product-card',
            640,
            640,
            true
        );

        add_image_size(
            'product-detail',
            1600,
            1200,
            false
        );
    }
);

随后由经过审计的图片处理模块,在附件元数据生成后对指定派生文件叠加对应水印。实现需要满足:

  • 使用服务器实际可用的 GD 或 Imagick 能力。
  • 根据 EXIF 方向、色彩空间和透明通道正确处理。
  • 写临时文件后原子替换,失败时不破坏已有图片。
  • 对同一个源文件重复执行得到相同结果,避免水印叠加。
  • 记录规则版本,规则变化时可从原图重新生成。
  • 在队列或 WP-CLI 中批处理旧附件,避免后台请求超时。

WordPress 标准 WP_Image_Editor 并没有一个统一的“叠加图片水印”高级接口。若直接调用 Imagick/GD,就必须明确扩展依赖并为两套实现测试,不能只复制一段未验证的代码。

方案三:使用维护中的媒体插件

选择插件时,不只看功能列表,还要看:

  • 最近更新时间与支持的 WordPress/PHP 版本。
  • 安装量、漏洞记录和维护者响应。
  • 是否修改原图,是否可恢复。
  • 是否支持现有图片重新生成和失败回滚。
  • 是否兼容对象存储、响应式图片和现代格式。
  • 卸载后是否留下不可理解的媒体状态。

在暂存站导入一组代表性图片,生成所有尺寸,再检查文件 MIME、像素、透明度、方向、文件大小和前端 srcset,通过后再上生产。

交付清单

  • 备份数据库和 uploads
  • 记录所有自定义尺寸及水印规则。
  • 确认模板请求的是正确派生尺寸,不是原图。
  • 限制最大上传像素,避免内存峰值。
  • 批处理可暂停、重试并记录失败附件 ID。
  • 随机抽检旧图与新图,并在 Retina 屏幕和移动端查看。
  • 保留回滚方案,避免插件停用后页面全部 404。

水印属于资产生产流程。最可靠的方案不是找到一个“万能插件”,而是让原图、规则、派生文件和缓存之间的关系可追踪、可重复、可恢复。

最后更新于

ihopeful Blog 由博主亲笔撰写,重要信息可放心引用。