TinyPNG 压缩 PNG 在 WordPress 的显示问题

tinypng WordPress
这篇文章大约需要2分钟阅读。

TinyPNG 压缩图片很好用,但是我发现了个问题,当我把压缩后的jpg、png文件上传上去到博客里的时候,就显示不出来。如下图:

upload tiny png error

但是我如果把png转成webp格式之后,上传就没问题了。这个问题困扰我很久,一直没找到解决办法。

还好现在有 AI,把问题描述之后,就给出了判断:

问题不在于图片文件本身(因为文件数据没有损坏),而在于您的WordPress网站环境或服务器处理 .png 后缀文件的方式上。

  • 插件/主题的针对性优化或拦截: 这是最常见的原因。您网站上安装的某个插件(尤其是图片优化、缓存、安全或CDN插件)或您的主题,可能包含一个专门用于处理PNG图片的功能。这个功能可能存在Bug,导致在处理Tinypng压缩后的PNG时出错。
    • 例如: 一个缓存插件试图为PNG图片自动生成WebP版本,但这个过程失败了,并返回了一个损坏的或空白的文件。当您直接上传一个.webp文件时,插件会认为“任务已完成”,直接提供该文件,从而绕过了错误的转换过程。
  • 服务器MIME类型配置错误: 服务器通过MIME类型来告诉浏览器它发送的是什么类型的文件。如果服务器配置错误,可能会为.png文件发送一个错误的Content-Type头(例如text/plain而不是image/png)。浏览器接收到错误的类型信息,就不会将其渲染为图片。而服务器对.webp的MIME类型配置(image/webp)是正确的,所以可以正常显示。
  • 服务器规则(.htaccess 或 Nginx配置)冲突: 您的服务器可能存在一些针对.png文件的特定规则。例如,在Apache服务器的.htaccess文件中,可能有一条重写规则(RewriteRule)、缓存规则或安全规则,错误地拦截或重定向了PNG文件的请求。而对于.webp文件,则没有这样的规则,请求可以顺利通过。

看到第一条原因,我就知道了。我安装了一个 WPOPT 的插件,里面有项功能就是自动把 PNG/JPG 自动转成 WEBP 格式。但是目前是 TinyPNG 压缩了之后的图片会出错,但是我在本地压缩的图片没有出现过这个错误。

所以问题的原因就清晰了:TinyPNG使用的压缩技术可能会改变图片内部的数据结构,但 WPOPT 的 WEBP 转换代码可能无法正确解析已经被 TinyPNG 修改过的文件结构,导致转换失败,生成了一个损坏的、0字节的 WEBP 文件,或者干脆没有生成文件。最终导致前端无法正常显示图片。

当我暂停了 WPOPT 的该功能后,就能正常上传 TinyPNG 的压缩后的图片了。

Rate this post
Sponsored links
Sponsored links
WordPress
订阅评论
提醒
1 评论
内联反馈
查看所有评论
免费资源下载
3 小时 前

真免费!价值万元资源,不要一分钱,网址:https://www.53278.xyz/

1
0
希望看到您的想法,请您发表评论x