前言:众所周知,兰空图床是一款不错的图床,也是我自己的博客一直在用的图床,可惜兰空图床自身并不支持avif格式的图片上传,所以本篇教程就来教大家我们自己手动添加avif格式的支持,废话不多说,我们上教程。

修改config/convention.php的109行,添加avif

GroupConfigKey::AcceptedFileSuffixes => ['jpeg', 'jpg', 'png', 'gif', 'tif', 'bmp', 'ico', 'psd', 'webp', 'avif'],

修改app/Http/Requests/Admin/GroupRequest.php的41行,添加avif

'configs.accepted_file_suffixes' => 'required|array|in:jpeg,jpg,png,gif,tif,bmp,ico,psd,webp,avif',

修改app/Services/ImageService.php 159行左右,可以搜索图片处理,修改判断跳过avif

if (! in_array($extension, ['ico', 'gif', 'avif'])) {

253行左右,可以搜索图片检测,修改判断跳过avif

// 图片检测,跳过 tif、ico 以及 psd 格式
if ($configs->get(GroupConfigKey::IsEnableScan) && ! in_array($extension, ['psd', 'ico', 'tif', 'avif'])) {

修改app/Http/Controllers/Controller.php 168行左右,可以搜索水印功能,修改判断跳过avif

// 是否启用了水印功能,跳过gif和ico图片
if (
    $image->group?->configs->get(GroupConfigKey::IsEnableWatermark) &&
    $configs->get('mode', Mode::Overlay) == Mode::Dynamic &&
    ! in_array($image->extension, ['ico', 'gif', 'avif'])

189行左右,可以搜索图片直接输出,修改判断跳过avif

// ico 图片直接输出,不经过 InterventionImage 处理
if (in_array($image->extension, ['ico', 'avif'])) {
    goto out;
}

然后在用户组开启设置就可以上传了。 4c34a18441d7df070405dc5297715875.png1ed1166ad0aa08bedfca8823e5abb8b7.png21484a312b05fff96eea7259418367ea.png