Typecho 1.3+Php8.0可以使用的图片水印插件

rongyan
2026-05-31 / 0 评论 / 1 阅读 / 耗时: 26 ms /

经常来看我博客的访客都会知道,我的博客文章中的图片都会有一个域名文字的水印。
所以也经常在后台有人私信问我这个水印是怎么弄的。
其实这是一个插件,原作者插件github开源地址(感谢!): 图片水印插件

然后根据你自己的需求,弄两张水印图(一大一小,覆盖大的图片和小的图片,Png格式)
如下图,看上去似乎一样,实际上分辨率是不同的,就是同一张图我在PS中导出为两种分辨率的而已。我这里一开始就是随便测试的两张图,没想到效果出奇的符合我的味口,所以就一直沿用至今:
typecho 图片水印

后台的插件设置也非常简单直接:
typecho 图片水印插件设置

这样子你在编写文章的时候,上传的图片会自动进行水印处理。
但是作者的这个插件好久没有更新了,我测试了在我的php8.2下有一些问题。
我的博客之前用的老服务器是php7.4,这个插件使用一切正常。昨天我的博客进行了搬家,现在新的服务器是php8.2,这个插件就不正常了,症状是上传图片会显示上传失改,但实际上图片已经上传成功了,水印也附着了,就是需要刷新网页才能显示出来。

后来查了日志才知道是这个水印插件的问题,waterMark插件在返回JSON前输出了PHP8.2弃用警告,导致整个响应不是合法的JSON,JavaScript解析失败。

说人话就是imgfunc.php参数顺序不符合PHP8.2,必选参数在可选参数之后,输出Deprecated 警告污染了JSON响应。上传其实是成功的(文件已保存),但浏览器解析JSON时报错,所以显示"上传失败"。

修复方法:修正 waterMark 插件的函数参数顺序。

改动的地方有两处:

imgfunc.php:6 — 把 $w_pct, $w_quality 移到可选参数前面
Plugin.php:79 — 同步调整调用顺序



为了以后更新方便,我直接把作者的github项目fork之后更新了:
修复后的Typecho图片水印插件项目

本次更新日志(2026-05-31):

  • 兼容 PHP 8.0+
  • 修复 ImgWaterMark() 函数参数顺序:将必选参数 $w_pct、$w_quality 移至可选参数之前
  • 解决 PHP 8.0+ 报 Deprecated: Optional parameter declared before required parameter 警告的问题
  • 修复因该警告导致 Typecho 上传图片后 JSON 响应被污染、前端提示"上传失败"的 bug
  • 下载地址(回复可见):

再次感谢作者开发了这么好用的插件工具!

你认为这篇文章怎么样?
  • 0
    点赞
  • 0
  • 0
  • 0
    滑稽
  • 0
    尴尬
  • 0
    睡觉
  • 打赏
    打赏

评论 (0)

取消
头像
邮箱:
I P:
互动: