cbz2ebook: Pad to screen size
This avoids issues with my Kobo Forma, which displays full-width pages at an offset, if it is preceded by a page which is less wide.
This commit is contained in:
parent
f59ab31d54
commit
88b1d14273
36
cbz2ebook.py
36
cbz2ebook.py
|
@ -1,33 +1,13 @@
|
|||
#!/usr/bin/env cached-nix-shell
|
||||
#!nix-shell -i python3 -p python3 python3Packages.pillow python3Packages.tqdm
|
||||
from PIL import Image
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from tqdm import tqdm
|
||||
from zipfile import ZipFile
|
||||
import argparse
|
||||
import sys
|
||||
import zlib
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from zipfile import ZipFile
|
||||
|
||||
|
||||
def should_scale(in_width, in_height, out_width, out_height):
|
||||
return not (
|
||||
(in_width == out_width and in_height <= out_height)
|
||||
or (in_height == out_height and in_width <= out_width)
|
||||
)
|
||||
|
||||
|
||||
def scaled_size(in_width, in_height, out_width, out_height):
|
||||
in_aspect_ratio = float(in_width) / float(in_height)
|
||||
out_aspect_ratio = float(out_width) / float(out_height)
|
||||
|
||||
if in_aspect_ratio > out_aspect_ratio:
|
||||
height = out_width / in_aspect_ratio
|
||||
width = out_width
|
||||
else:
|
||||
width = out_height * in_aspect_ratio
|
||||
height = out_height
|
||||
|
||||
return int(round(width)), round(int(height))
|
||||
from PIL import Image, ImageOps
|
||||
from tqdm import tqdm
|
||||
|
||||
|
||||
def process_image(im):
|
||||
|
@ -38,12 +18,8 @@ def process_image(im):
|
|||
# convert to greyscale
|
||||
im = im.convert("L")
|
||||
|
||||
# resize if necessary
|
||||
if should_scale(im.width, im.height, args.width, args.height):
|
||||
im = im.resize(
|
||||
scaled_size(im.width, im.height, args.width, args.height),
|
||||
resample=Image.Resampling.LANCZOS,
|
||||
)
|
||||
# pad to screen size
|
||||
im = ImageOps.pad(im, (args.width, args.height), Image.Resampling.LANCZOS, "#fff")
|
||||
|
||||
return im
|
||||
|
||||
|
|
Loading…
Reference in a new issue