Skip to content

Commit

Permalink
fix ext
Browse files Browse the repository at this point in the history
  • Loading branch information
eesxy committed Mar 30, 2023
1 parent c42a3cf commit f470afb
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 9 deletions.
2 changes: 1 addition & 1 deletion comic2epub/const.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
IMAGE_EXT = {'.jpg', '.jpeg', '.png'}
IMAGE_EXT = {'.jpg', '.jpeg', '.png', '.JPG', '.JPEG', '.PNG'}
12 changes: 11 additions & 1 deletion comic2epub/image_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def __call__(self, img: Image.Image):
if np.any(in_threshold[h1, :]): break
for w1 in range(in_threshold.shape[1] - 1, -1, -1):
if np.any(in_threshold[:, w1]): break
if w0 == w1 or h0 == h1: return img # type: ignore
return img.crop((w0, h0, w1, h1)) # type: ignore


Expand Down Expand Up @@ -98,7 +99,16 @@ def __call__(self, data: bytes, ext: str):
else:
img.save(new_data, 'JPEG', qtables=qtables, optimize=True, subsampling=subsampling)
return new_data.getvalue(), ext
elif ext in ['.png']:
elif self.fixed_ext == '.jpg' or self.fixed_ext == '.jpeg':
for transform in self.transforms:
img = transform(img)
new_data = io.BytesIO()
if img.mode in ['RGBA', 'LA', 'RGBa', 'La']:
img = img.convert('RGB')
quality = self.jpeg_quality if self.jpeg_quality != -1 else 100
img.save(new_data, 'JPEG', quality=quality, optimize=True, subsampling=0)
return new_data.getvalue(), ext
elif ext in ['.png'] or self.fixed_ext == '.png':
for transform in self.transforms:
img = transform(img)
new_data = io.BytesIO()
Expand Down
24 changes: 17 additions & 7 deletions settings.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@ rearrangement = false
# 分点文件应当为.toml格式, 内容形如
# [comic0]
# title = "example"
# breakpoints = ["第1章", "第14章", "第29章"]
# 其中comic0可以是任意值, 程序不会解析该值, 只需保证不重复即可; title是漫画的实际标题
# breakpoints是各分卷第一章标题
# breakpoints = ["第14章", "第29章"]
# 其中:
# comic0可以是任意值, 程序不会解析该值, 只需保证不重复即可
# title是漫画的实际标题
# breakpoints是各分卷第一章标题(第一分卷的第一章可以省略)
# 要禁用手动拆分, 将此项设为空字符串
manual_split = ""

Expand Down Expand Up @@ -119,9 +121,16 @@ dedup_method = "phash"

[image_pipeline]
### 是否启用图像处理
# Notice: 启用图像处理将会不可避免地改变图像内容
# 即使不启用下列任何一个图像处理模块并将JPEG质量设为-1, 输出图像与原图像仍会有灰度值<=1的误差
# 这可能是由于PIL量化后取整的方式与原图像不同, 造成输出存在舍入误差
# 通常情况下, 这些转换损耗无法被人眼察觉
# 此项目通过复用JPEG量化表已最大限度地避免转换损耗, 并且保持处理后的图像与原图像具有相当的质量
# 如果您仍非常介意转换损耗, 请考虑禁用图像处理
enable_image_pipeline = false

### 固定图片文件格式
# 可选: "", ".jpg", ".jpeg", ".png"
# (例: 设为".jpg"会将所有图片转为.jpg格式)
# 如果为空字符串, 则按照图片原格式输出
# Notice: 目前仅支持JPEG和PNG格式, 其他格式的图像将被忽略
Expand All @@ -133,14 +142,14 @@ fixed_ext = ""
# (注: 质量因子越大, 图像质量越好, 文件体积也越大, 不建议设为95以上的值)
# 若为-1, 则总是以原质量输出(与100等价)
# Notice: 这里的以原质量输出是通过使用原图像的量化表实现, 而非以原质量因子输出
# 质量因子与量化表涉及JPEG压缩原理, 请自行查阅资料, 不感兴趣的直接设95即可
# 质量因子与量化表涉及JPEG压缩原理, 不感兴趣的直接设95即可
jpeg_quality = 95

### .png图像压缩级别
### PNG图像压缩等级
# 为0-9之间的整数或-1
# 若为0-9之间的整数, 表示图像压缩等级, 越小文件体积越小, 压缩和读取时间越长
# 若为-1, 表示以尽可能小的文件体积压缩
# Notice: 这里默认值即为PIL的默认值6
# 默认为6, 即PIL的默认值
png_compression = 6

[crop]
Expand All @@ -149,7 +158,8 @@ enable_crop = false

### 白边阈值
# 灰度值在此闭区间内视为有效内容
# 如果含有水印, 建议设为[0, 150], 水印较深的可以进一步降低阈值; 如果不含水印设为[0, 255]即可
# 如果含有水印, 建议设为[0, 140], 水印较深的可以进一步降低阈值; 如果不含水印可以设为[0, 255]
# (注: 实测叔叔家水印一般不低于140)
crop_lower_threshold = 0
crop_upper_threshold = 255

Expand Down

0 comments on commit f470afb

Please sign in to comment.