WP笔记

WordPress无法上传大图片

WordPress 5.3新增了处理大图片的功能,目的是自动化压缩不适合网络浏览的图片。但有时上传原图是必须的,如果原图很大,那生成大尺寸压缩图片时可能会因为服务器资源不足等问题导致上传失败。有时也不是真的失败了,就是服务器超时,导致一些该有的ajax响应收不到,从用户界面看就是失败了,但图片其实传上去了。

错误提示

The server can’t process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.

解决方案

最直接的解决方法是禁用大图片功能,你可以选择安装插件Disable “BIG Image” Threshold,或者直接在主题的functions.php里放如下代码,其实这个插件也就是这一句代码。

add_filter( 'big_image_size_threshold', '__return_false' );

WordPress如何处理大图片

WordPress5.3版本增加了大图片处理功能,WordPress会检测上传图片的宽和高,如果其中任何一项超过2560像素,就要尝试将图片压缩到2560像素以下,并用压缩后的尺寸作为“full“ size。2560这个值可以通过filter big_image_size_threshold修改。filter定义如下,位于wp-admin/includes/image.php 283行

$threshold = (int) apply_filters( 'big_image_size_threshold', 2560, $imagesize, $file, $attachment_id );

除了禁用大图片处理,你还可以尝试:

  • 增加memory_limit
  • 增加max_execution_time
  • 检查当前上传一张图片会生成多少压缩版本,不要生成过多的版本,可以借助插件Disable Media Sizes