Permalink
Browse files

Additional command line options

Support for single file
  • Loading branch information...
kthoden committed May 29, 2018
1 parent a71281a commit dafbe96df886e0e4f549af18af26e1fe43efdd15
Showing with 40 additions and 17 deletions.
  1. +40 −17 mkimage.py
View
@@ -12,7 +12,7 @@
import argparse
from PIL import Image, ImageFont, ImageDraw
-logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s - %(message)s')
+logging.basicConfig(level=logging.INFO, format=' %(asctime)s - %(levelname)s - %(message)s')
DIMENSIONS = (2000, 2844) # ratio of 0.703205791106515
BACKGROUND = 0, 0, 0
@@ -35,6 +35,9 @@ def get_cover_image(image_path):
candidates = os.listdir(image_path)
for image in candidates:
+ if image == ".DS_Store":
+ candidates.remove(image)
+ continue
tmp_image = Image.open(image_path + "/" + str(image))
ratio = calculate_ratio(tmp_image)
if ratio < 1:
@@ -124,7 +127,7 @@ def add_watermark(image, watermarkstring):
base_image.paste(slanted_image, (200, 100), slanted_image)
base_image.save(image)
- print("Added a watermark to", image)
+ logging.info("Added a watermark to %s." % image)
# return slanted_image
# def add_watermark ends here
@@ -140,7 +143,7 @@ def centered(textstring, font_spec):
return coordinate
# def centered ends here
-def create_cover(metadata_dict, image_directory, cover_filename):
+def create_cover(metadata_dict, image_directory, cover_filename, image_is_file):
"""Create a cover using PIL"""
img = Image.new("RGB", DIMENSIONS, BACKGROUND)
@@ -151,6 +154,9 @@ def create_cover(metadata_dict, image_directory, cover_filename):
title_text = metadata_dict['eoa_title']
subtitle_text = metadata_dict['eoa_subtitle']
authors_text = format_authors(metadata_dict['eoa_authors'])
+ if len(metadata_dict['eoa_zusatz']) > 0:
+ authors_text += " {}".format(metadata_dict['eoa_zusatz'])
+
series_number_text = "{0} {1}".format(metadata_dict['eoa_series'], metadata_dict['eoa_number'])
if metadata_dict['eoa_series'].lower() == "sources":
@@ -207,40 +213,57 @@ def create_cover(metadata_dict, image_directory, cover_filename):
img.paste(resized_image, (int(coord), 1200))
img.save(cover_filename)
- print("Wrote", cover_filename)
-
- watermark = add_watermark(cover_filename, "Automatically generated cover.\nDo not use in production!")
+ logging.info("Wrote %s." % cover_filename)
# def create_cover ends here
if __name__ == '__main__':
parser = argparse.ArgumentParser()
- parser.add_argument("image_dir", help="Path to directory with potential images.")
+ parser.add_argument("image_dir_or_image", help="Path to directory with potential images or a single file.")
parser.add_argument("-c", "--config", help="File that contains the publication data.", default="publication.cfg")
parser.add_argument("-o", "--output", help="Name of output file.", default="Cover.jpg")
+ parser.add_argument("-nw", "--nowatermark", help="Do not add a watermark to the image.", action="store_true")
args = parser.parse_args()
- IMAGES = args.image_dir
-
- if os.path.exists("publication.cfg"):
- logging.debug("Using %s as publication config" % (args.config))
+ if args.config:
+ # if os.path.exists("publication.cfg"):
+ logging.info("Using %s as publication config" % (args.config))
config = configparser.ConfigParser()
config.read(args.config)
- list_of_authors = list(set(config['Authors'].values()))
- for author in list_of_authors:
- if len(author) == 0:
- list_of_authors.remove(author)
+ list_of_authors = []
+
+ for entry in range(0, 5):
+ author_label = "Author" + str(entry + 1)
+ tmp_author = config['Authors'][author_label]
+ if len(tmp_author) > 0:
+ list_of_authors.append(tmp_author)
METADATA_DICT.update({'eoa_series' : config['Technical']['Serie']})
METADATA_DICT.update({'eoa_number' : config['Technical']['Number']})
METADATA_DICT.update({'eoa_title' : config['Technical']['Title']})
METADATA_DICT.update({'eoa_subtitle' : config['Technical']['Subtitle']})
METADATA_DICT.update({'eoa_authors' : list_of_authors})
+ METADATA_DICT.update({'eoa_zusatz' : config['Authors']['Zusatz']})
else:
- logging.debug("Using the built-in metadata as publication config")
+ logging.info("Using the built-in metadata as publication config")
OUTFILE = args.output
- create_cover(METADATA_DICT, IMAGES, OUTFILE)
+ IMAGES = args.image_dir_or_image
+
+ if os.path.isfile(IMAGES):
+ image_is_file = True
+ elif os.path.isdir(IMAGES):
+ image_is_file = False
+ else:
+ print("No valid image or directory given. Exiting.")
+ sys.exit()
+
+ create_cover(METADATA_DICT, IMAGES, OUTFILE, image_is_file)
+
+ if args.nowatermark:
+ logging.info("No watermark. Be careful. This is not meant to be an official cover.")
+ else:
+ add_watermark(OUTFILE, "Automatically generated cover.\nDo not use in production!")
# finis

0 comments on commit dafbe96

Please sign in to comment.