WordPress处理大图片的方式一直是用户和开发人员讨论的话题。
通常,上传的图片有两种类型:
- 在图片编辑应用程序中已编辑过或创建的图片。
- 直接从相机上传或尚未编辑的照片。
在第一种情况下,图片通常是“可用于网络的”。它们可能已缩小到合适的大小并进行了优化。
在第二种情况下,图片通常比需要的大得多,并且没有针对Web使用进行优化。用普通的现代智能手机拍摄的照片文件大小很容易超过5MB。使用优质相机拍摄的照片可能更大。
WordPress 5.3 引入了一种新方法,来检测大图片并生成它们的“网络优化最大尺寸”。
它是如何工作的?
当上传新图片时,WordPress 将通过检查其高度或宽度是否大于 big_image
阈值,以此来检测它是否为“大”图像。默认阈值为2560px,可以使用新的big_image_size_threshold
过滤钩子进行修改。
如果图片的高度或宽度大于此阈值,则将按比例缩小,这个阈值将用作最大高度和最大宽度值。缩小的图像将用作最大可用尺寸。
在这种情况下,原始图像文件存储在uploads目录中,它的名称存储在图像元数组中的另一个数组键:original_image
。为了始终获得原始上传图像的路径,引入了一个新函数: wp_get_original_image_path()
。
按照上面的说法是,原始大小的图片还将继续保存在uploads目录中,只是缩放生成一个新的图片,作为前端加载的最大可用尺寸。倡萌认为,这里也是有一些弊端的,如果可以提供钩子控制是否删除原图,那才是更好的一种方案。但现在的改进也是非常有意义的,至少前端加载的图片不会是原始图片,要知道原始图片5M以上,加载速度那是非常慢的!
禁用缩放
缩放由 big_image_size_threshold
过滤钩子控制。从过滤钩子回调返回 false
将禁用图片缩放。
add_filter( 'big_image_size_threshold', '__return_false' );
如果你想要更灵活的缩放图片,可以试试插件 Imsanity:限制上传图片尺寸大小