今天给个网友做WordPress站点优化,结果发现 WordPress 媒体库图片上传的时候提示“图像后期处理失败。如果这是一张照片或较大图像,请将其缩小到2500像素并重新上传。”这也是缙哥哥使用WordPress 5.3.1第一次遇到这样的问题,先根据提示进行一步步排查!
WordPress图片上传失败错误提示
中文提示:图像后期处理失败。如果这是一张照片或较大图像,请将其缩小到2500像素并重新上传。
英文提示:Post-processing of the image failed. If this is a photo or a large image, please scale it down to 2500 pixels and upload it again.
问题原因
由于现在的手机动则几千万像素,随便一张照片都是四五兆大小,分辨率更是可怕(虽然DPI很低),所以WordPress 5.3这个版本开始,引入了一种通过检测大图像并生成它们的“网络优化最大尺寸”来管理这些图像的新方法,用来解决这种大图片。
它是如何工作的?
当上传新图像时,WordPress将通过检查其高度或宽度是否大于来检测它是否为“大”图像big_image threshold
。默认阈值为2560px,可以使用新big_image_size_threshold
过滤器进行过滤。
如果图像的高度或宽度大于此阈值,则将按比例缩小该阈值,并将其用作最大高度和最大宽度值。缩小的图像将用作最大可用尺寸。
在这种情况下,原始图像文件存储在uploads目录中,其名称存储在图像元数组中的另一个数组键中original_image
。为了始终获得原始上传图像的路径,wp_get_original_image_path()
引入了一个新功能。
解决办法
方法一:重启(清理缓存)解决
缙哥哥最近遇到太多的类似问题了,比如升级 WordPress 几次了,还是老版本……都是缓存惹的祸,当你不知道什么缓存引起的问题时,重启服务器解决。绝大多数 WordPress 站长是使用 Memcached 或 Redis 内存缓存(拓展阅读《Redis和Memcached哪个比较好?》),如果你还使用了缓存插件,包括但不限于W3 Total Cache、WP SUPER CACHE、wp rocket……也顺便清理下缓存,排除其影响的可能性。然后重新尝试上传图片,或许就不会有“请将其缩小到2500像素并重新上传”这样可恶的提示了。
方法二:使用代码或插件禁止裁剪功能
我们根据其工作原理可以得知,将其禁用:
缩放比例由big_image_size_threshold
滤波器控制 。false
从过滤器回调返回将禁用它。老规矩,在当前主题的 functions.php
文件中添加:
//禁用WordPress大图片(2560大小)裁剪功能 add_filter( 'big_image_size_threshold', '__return_false' );
如果你懒得加这句代码,还可以使用Disable "BIG Image" Threshold
这个插件进行对WordPress5.3版本以上的大图像阈值进行禁用
这个比较适合那些上传之前就已经处理的,或者需要上传高清大图的摄影师,以保留原始图片。
方法三:提前处理好你的图片
一般主体能够显示的图片宽度也就是600-900之间,比如淘宝详情页的图片也就是790px,再比如,缙哥哥的博客大部分图片都是800px。所以,缙哥哥建议你在上传图片之前先把图片处理好,并压缩一下。这样既能够给自己的服务器或者对象存储省空间,还能给访客带来极速的感觉。
- 《继 TinyPNG 后谷歌推出 Squoosh 图片压缩神器》
- 《Optimizilla在线图片优化器,又一款中文在线无损压缩图片工具》
- 《如何利用2345看图王批量压缩WordPress图片以提高站点速度》
方法四:增加PHP内存限制
排除掉服务器缺少可用内存以使后台上载过程成功完成。这是共享WordPress托管的一个非常常见的问题。要修复它,您需要增加PHP可以使用的内存量。这里缙哥哥建议使用 256 MB 以上。
使用wp-config.php增加PHP内存限制
您可以通过将以下代码添加到wp-config.php
文件来增加PHP内存限制。注意:这可能会被WordPress主机的服务器级规则覆盖。
define( 'WP_MEMORY_LIMIT', '256M' );
方法五:更改Nginx上传文件大小
将Nginx最大上传文件参数client_max_body_size
调大,来避免某些图片可能出现的上传错误,如果你用的是宝塔的话那就非常方便了,直接改下数值即可,下图供参考:
从来不用过大的图片,影响加载
OSS设置问题
上面所有的方法都用过了,没有作用。
将你的站点信息发我邮箱,明天给你看看
好的。谢谢。
那么你最后用哪种方法解决的?