
夜梦这段时间使用掌阅(ireader)读书,然后碰巧看到了漫画,所以就想着把漫画也导入到电纸书中阅读,夜梦这里使用的是掌阅Neo2。
关于漫画,夜梦下载到的是数十个WEBP格式的图片,如果直接导入neo2中也可以直接看,但是没办法点击翻页,需要手动滑动才能翻页,比较麻烦。所以夜梦考虑把它们“组装”成CBZ格式的漫画,导入后就可以直接点击翻页,很便捷。
CBZ(Comic Book Zip)本质上是一个按照顺序排列图片的压缩包,大多数漫画阅读器均支持该格式。
一些废话:
相比PDF,CBZ更适合漫画阅读:
通过Python可以快速将WEBP漫画打包为CBZ文件,并自动:
对于漫画阅读场景,CBZ通常比PDF更轻量、更流畅,也是目前最推荐的漫画电子书格式之一。
夜梦这里使用Python将WEBP漫画打包为CBZ 电子漫画书。在“组装”之前,漫画资源都目前以单页图片的形式保存,例如:
00001.webp
00002.webp
00003.webp
...假设漫画目录如下:
文件夹
├─00001.webp
├─00002.webp
├─00003.webp
├─...其中:00001.webp 为第一页,文件名按照页码顺序命名。使用下面的python脚本就可以直接将这些图片打包成CBZ格式的漫画(默认使用第一页00001.webp作为漫画封面,同时默认把文件夹名作为cbz名称):
from pathlib import Path
import zipfile
import re
# =========================
# 漫画文件夹
# =========================
input_dir = Path(r"./文件夹")
# =========================
# 输出CBZ
# =========================
output_cbz = input_dir.parent / f"{input_dir.name}.cbz"
# =========================
# 数字排序
# =========================
def get_number(path):
m = re.search(r"\d+", path.stem)
return int(m.group()) if m else 0
files = sorted(
input_dir.glob("*.webp"),
key=get_number
)
if not files:
raise Exception("未找到WEBP文件")
# =========================
# 创建CBZ
# =========================
with zipfile.ZipFile(
output_cbz,
"w",
compression=zipfile.ZIP_STORED
) as cbz:
# 使用第一页作为封面
cover = files[0]
cbz.write(
cover,
arcname="cover.webp"
)
# 添加全部页面
for f in files:
cbz.write(
f,
arcname=f.name
)
print()
print("========== 完成 ==========")
print(f"书名:{input_dir.name}")
print(f"封面:{files[0].name}")
print(f"页数:{len(files)}")
print(f"输出:{output_cbz}")执行完成后,将生成:
文件夹名.cbz压缩包内部结构:
cover.webp
00001.webp
00002.webp
00003.webp
...完成后直接把OBZ文件导入掌阅中即可,推荐数据线传输,拔掉数据线后会自行把OBZ格式的漫画加入书架。over~