使 Typecho 支持上传 WEBP AVIF 格式的图片

自 2025 年起,几乎所有的浏览器都已经完美支持 WEBP AVIF 格式的图片,并且此类格式有着占用空间小的优势,意味着用 WEBP AVIF 格式图片的网站加载速度会更快一些。

Typecho 官方 1.2.0 的正式版本还未能适配 WEBP AVIF 格式图片的上传,本教程无需插件,直接修改三个文件就可以达到此类格式图片上传的目的。

1、编辑var/Widget/Themes/Rows.php

return preg_match("/screenshot\.(jpg|png|gif|bmp|jpeg)$/i", $path);

变更为

return preg_match("/screenshot\.(jpg|png|gif|bmp|jpeg|webp|avif)$/i", $path);

2、编辑var/Widget/Base/Contents.php

$value['attachment']->isImage = in_array($content['type'], ['jpg', 'jpeg', 'gif', 'png', 'tiff', 'bmp']);

变更为

$value['attachment']->isImage = in_array($content['type'], ['jpg', 'jpeg', 'gif', 'png', 'tiff', 'bmp', 'webp', 'avif']);

3、编辑var/Typecho/Common.php

'jpg'      => 'image/jpeg',

后面添加

'webp'     => 'image/webp',
'avif'     => 'image/avif',

4、在后台 - 基本设置 - 其他格式里填入webp avif 就可以正常上传图片了。