☰
Kavita 媒体转换指南:两步把封面库瘦身
2026/11/4 2:16:09 网站建设 项目流程

Kavita 媒体转换指南:两步把封面库瘦身

【免费下载链接】KavitaKavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.项目地址: https://gitcode.com/gh_mirrors/ka/Kavita

服务器跑了一段时间后,你可能会发现封面和书签图片目录自己就占了几十 GB,而每张小图还都以无损 PNG 的形式发给客户端,弱网下书架翻页明显发闷。漫画压缩包本身没法动,但这些"衍生图片"是可以瘦身的。Kavita 的媒体转换功能做的就是这件事:把 Kavita 自己管理的所有图片重新编码成更小的格式,本文带你把格式选择和批量转换任务走完一遍。

30 秒看完全文

  • 转换对象是 Kavita 管理的图片:封面、书签截图、网站图标,漫画压缩包本身不会被改动
  • 格式在EncodeMediaAs配置项里选,只有 PNG / WebP / AVIF 三个选项,默认是 PNG
  • 改配置不会自动转换存量文件,必须手动触发"将媒体转换为目标编码格式"任务
  • 典型节省幅度在 25%–50% 量级,具体随图片内容浮动
  • 转成 WebP/AVIF 后无法直接转回 PNG,只能刷新资料库重新生成封面

它到底在干什么

核心数据流在代码里由MediaConversionService负责:先查数据库找出 Kavita 管理的所有封面、书签、图标,过滤掉扩展名已与目标格式一致的文件;然后ImageService把每个原图解码后按目标格式重新编码写盘;新文件写成功后才删除原文件,数据库引用随即更新,进度通过后台推送实时显示在管理界面。这个任务跑在 Hangfire 队列里(Kavita 的后台任务排队机制),是一个长时间运行的作业。打个比方,它相当于把相册里的照片从大相框换进小相框——内容不变,只换承载格式。

选哪个格式

兼容优先:选 WebP

如果你的客户端都是浏览器或主流阅读端,WebP 是最省心的默认选择。它比 JPEG 通常小 25%–35%,比 PNG 小约 26%,现代浏览器支持成熟到基本不用操心。代价是编码速度比 PNG 略慢,个别很老的终端可能不识别。

压缩优先:选 AVIF

想把同一张图压到最小就选 AVIF。它是基于 AV1 编码(新一代视频/图像编码标准)的格式,同画质下比 JPEG 小约 50%,比 WebP 再小 30%–50%。代价是编码最耗时间,Kavita 官方任务说明也明确提示"在 ARM 设备上尤其慢"。

保真优先:留 PNG

如果希望珍贵首版封面一个像素都不变,保持默认 PNG 即可,它是无损编码,保真度 100%。代价是体积最大,而且 PNG 是唯一不能作为转换目标的格式——选它等于不转换,任务会直接拒绝执行。

格式典型压缩比一句话适用场景
WebP比 JPEG/PNG 小约 25%–35%默认选择,兼容性与体积的平衡点
AVIF比 WebP 再小约 30%–50%空间挤到极致,且设备性能够
PNG无压缩(无损)需要 100% 保真,或服务器性能弱

动手操作

新部署时一步到位

  1. 安装完成后进入 Admin → 媒体设置页
  2. 把"媒体另存为"(encodeMediaAs)从默认的 PNG 改成 WebP
  3. 保存即可,此后新生成的封面、书签、图标全部按新格式写入

已有库批量转换

  1. 仍在 Admin 下,切到任务标签页
  2. 点击一次性任务"将媒体转换为目标编码格式",它调用server/convert-media端点把任务加入队列
  3. 等待进度条走完:任务会依次处理书签、各类封面(章节、系列、卷、资料库、收藏等)、网站图标,这是长时间任务,ARM 设备上尤其慢,建议挑低峰时段

压缩了多少

下表为典型区间,实际数字随画风、分辨率、原图质量浮动:

原格式目标格式100 MB 样本转换后节省比例
PNGWebP约 65–75 MB约 25%–35%
JPEGWebP约 65–75 MB约 25%–35%
PNGAVIF约 45–60 MB约 40%–55%

需要说清楚:节省的是 Kavita 管理的媒体目录,漫画压缩包本身是占容量的大头,不会被重新编码,所以别指望整个资料库容量直接砍半。

万一失败了会怎样

  • 原文件不会丢:新文件写入成功后才删除原文件,转换失败会记日志并跳过,原文件保留、数据库仍指向旧文件,相当于自动回滚
  • 中断是安全的:每张转换完的文件立即落库,中断后重跑同一任务只会拾取格式不匹配的文件
  • 不会并发冲突:任务自带并发锁,重复触发会被直接忽略,不用担心两个任务同时跑

别犯这几个错

  • 以为原漫画文件也会被压缩:转换只涉及 Kavita 管理的封面、书签、图标,压缩包不动——后果是把期望定在"整库瘦身 80%"会失望;正确做法是转换前先看看媒体目录的实际体量,再设预期。
  • 转完 AVIF 又想回 PNG:官方警告明确,转成 WebP/AVIF 后无法直接转回 PNG,只能刷新资料库重新生成封面;后果是白白多跑一次全库扫描;正确做法是转换前把格式定好,拿不准就先做数据备份。
  • 没预留磁盘空间:转换是先写新文件再删旧文件,过程里媒体目录会临时多占一份新文件的体积;后果是空间不足时中途失败;正确做法是确认 Kavita 数据盘剩余空间大于媒体目录体积再动手。

想深入可以看这里

核心实现集中在 Kavita.Services/MediaConversionService.cs 这个文件,想深入可以看它;转换端点在 Kavita.Server/Controllers/ServerController.cs,实际编码逻辑在 Kavita.Services/ImageService.cs。

Kavita 的媒体转换让你在不碰原始文件的前提下,把所有衍生图片瘦身一遍,书架加载和存储都会更轻松。下一步很具体:去媒体设置页把"媒体另存为"改成 WebP,再跑一次任务里的"将媒体转换为目标编码格式",然后对比转换前后封面目录的体积。

【免费下载链接】KavitaKavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.项目地址: https://gitcode.com/gh_mirrors/ka/Kavita

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询