缩略图

Cloudreve 支持使用多种缩略图生成器,为不同类型的文件生成缩略图,包括图像、视频、Office 文档。您也可以借助“缩略图代理”功能扩展原本不支持缩略图生成的存储策略。

缩略图生成逻辑

何时生成

自 3.8.0 开始,Cloudreve 不会在文件上传后立即尝试为其生成缩略图,而是在尝试加载缩略图时生成。这一小节描述了 Cloudreve 会在何时决定加载缩略图。对于每个文件,其缩略图的状态可分为以下三种:

  • 未知:新文件上传后的默认状态。在文件列表查看此文件时,Cloudreve 会尝试生成并展示缩略图,如果失败,则将状态标记为无缩略图;如果成功,则将状态标记为缩略图存在

  • 缩略图存在:在文件列表查看此文件时,Cloudreve 会尝试加载缩略图。

  • 缩略图不存在:在文件列表查看此文件时,Cloudreve 不会展示缩略图。

在下列情况下,文件的缩略图状态会被重设为未知

  • 文件被转移到其他存储策略;

  • 文件被重命名时,处于缩略图不存在状态,且文件的扩展名发生变化;

  • 文件内容被更新。

如何生成

这一小节描述了 Cloudreve 如何为文件生成缩略图。Cloudreve 支持多种缩略图生成器,在生成缩略图时会按照“流水线”模式依此尝试每个生成器,直到有生成器成功返回了缩略图。目前支持的生成器及其尝试顺序如下表所示:

生成器
描述
不支持的存储策略
优先级(高到低)

存储策略原生

使用第三方存储策略原生接口生成缩略图,不会产生缩略图文件,只会产生缩略图的 URL 以供重定向。

本机、S3

1

LibreOffice

使用 LibreOffice 生成 Office 文档的缩略图。这一生成器依赖于任一其他图像生成器(Cloudreve 内置 或 VIPS)。

除了本机存储外,所有未开启“生成器代理”的其他类型存储策略。

2

VIPS

使用 libvips 处理缩略图图像,支持更多图像格式,资源消耗更低。

除了本机存储外,所有未开启“生成器代理”的其他类型存储策略。

3

FFmpeg

使用 FFmpeg 生成视频缩略图。

除了本机存储外,所有未开启“生成器代理”的其他类型存储策略。

4

Cloudreve 内置

无第三方依赖,使用 Cloudreve 内置的图像处理能力,仅支持 PNG、JPEG、GIF 格式的图片。

除了本机存储外,所有未开启“生成器代理”的其他类型存储策略。

5

有关各个生成器的详细介绍在后续章节中。

生成器代理

默认情况下,所有非本机存储策略只支持使用存储策略原生生成器,这一生成器速度最快,但支持的文件格式有限,某些存储策略(如 S3)甚至根本不支持缩略图生成。你可以在参数设置 - 图像与预览 - 缩略图 - 生成器代理中为这些存储策略开启“生成器代理”。开启后,如果原生生成器无法产生缩略图,Cloudreve 会尝试将文件下载下来后用流水线生成,再将生成的缩略图回传到存储策略。这一过程速度较慢,更适合自用场景,或者是小规模站点。

生成器

这一章节将详细介绍各个生成器及配置流程。

存储策略原生

在调用此生成器时,Cloudreve 会根据文件扩展及文件大小进行预检查,如果校验失败,Cloudreve 会跳过此生成器。默认的扩展名检查规则是根据各个存储提供商的文档制定,你可以在 专家模式编辑存储策略 - 可生成缩略图的文件扩展名 中覆盖这一规则。这里列出的大小限制独立于 Cloudreve 的缩略图大小统一限制(参数设置 - 图像与预览 - 缩略图 - 基本设置 - 最大原始文件尺寸)。

所有存储策略的默认支持规则如下表:

存储策略
扩展名
最大原始文件
来源

COS

JPG、BMP、GIF、PNG、WebP

32 MB

OneDrive

不检查扩展名 (直接尝试生成)

不检查大小

-

OSS

JPG、PNG、BMP、GIF、WebP、TIFF、HEIC、AVIF

20 MB

Qiniu

PSD、JPG、PNG、GIF、WebP、TIFF、BMP、AVIF

20 MB

从机

PNG、JPG、GIF (可扩展更多生成器,请参阅后续章节)

不检查大小

-

Upyun

JPG、JPEG、PNG、WebP、GIF、BMP、SVG

不检查

要注意的是,上述检查规则只是 Cloudreve 用于判断是否需要跳转到下一生成器,具体能否生成缩略图取决于存储端。

从机的原生生成器

从机的原生生成器本质上就是“Cloudreve 内置”生成器。你可以在从机端配置其他生成器,并在存储策略专家模式中覆盖支持的扩展名列表,达到扩展从机原生生成器的效果。

以 VIPS 为例,在从机的配置文件中通过配置项覆盖开启 VIPS:

[OptionOverwrite]
thumb_vips_enabled = 1
thumb_vips_path = vips
thumb_vips_exts = csv,mat,img,hdr,pbm,pgm,ppm,pfm,pnm,svg,svgz,j2k,jp2,jpt,j2c,jpc,gif,png,jpg,jpeg,jpe,webp,tif,tiff,fits,fit,fts,exr,jxl,pdf,heic,heif,avif,svs,vms,vmu,ndpi,scn,mrxs,svslide,bif,raw

同理,可以在从机上开启其他生成器:

[OptionOverwrite]
thumb_builtin_enabled = 1
thumb_ffmpeg_enabled = 1
thumb_ffmpeg_path = ffmpeg
thumb_ffmpeg_exts = mp4,avi
thumb_ffmpeg_seek = 00:00:01.00
thumb_libreoffice_enabled = 1
thumb_libreoffice_path = soffice
thumb_libreoffice_exts = pptx,docx

LibreOffice

主页:https://www.libreoffice.org/discover/libreoffice/

此生成器可以为 Office 文档生成缩略图,需要依赖于其他任一支持图片的生成器(VIPS 或者 Cloudreve 原生)。

以 Ubuntu 为例,安装 LibreOffice:

sudo apt install libreoffice

VIPS

主页:https://www.libvips.org/

以 Ubuntu 为例:

sudo apt install libvips-tools

Cloudreve 仅支持 8.5 或更新的 libvips,你可以通过如下命令确认安装的版本:

vips -v

某些较老发行版的包管理器中无最新版本的 libvips,推荐从源代码编译安装最新版:https://www.libvips.org/install.html

FFMpeg

主页:https://ffmpeg.org

以 Ubuntu 为例:

sudo apt install ffmpeg

Cloudreve 内置

无需安装第三方库,可直接生成常见图像(PNG、JPEG、GIF)的缩略图。

Last updated