diff --git a/cbz2ebook.py b/cbz2ebook.py index 8e95462..3db3543 100755 --- a/cbz2ebook.py +++ b/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