Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Additional command line options
Support for single file
  • Loading branch information
Klaus Thoden committed May 29, 2018
1 parent a71281a commit dafbe96
Showing 1 changed file with 40 additions and 17 deletions.
57 changes: 40 additions & 17 deletions mkimage.py
Expand Up @@ -12,7 +12,7 @@
import argparse import argparse
from PIL import Image, ImageFont, ImageDraw 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 DIMENSIONS = (2000, 2844) # ratio of 0.703205791106515
BACKGROUND = 0, 0, 0 BACKGROUND = 0, 0, 0
Expand All @@ -35,6 +35,9 @@ def get_cover_image(image_path):
candidates = os.listdir(image_path) candidates = os.listdir(image_path)


for image in candidates: for image in candidates:
if image == ".DS_Store":
candidates.remove(image)
continue
tmp_image = Image.open(image_path + "/" + str(image)) tmp_image = Image.open(image_path + "/" + str(image))
ratio = calculate_ratio(tmp_image) ratio = calculate_ratio(tmp_image)
if ratio < 1: if ratio < 1:
Expand Down Expand Up @@ -124,7 +127,7 @@ def add_watermark(image, watermarkstring):
base_image.paste(slanted_image, (200, 100), slanted_image) base_image.paste(slanted_image, (200, 100), slanted_image)


base_image.save(image) base_image.save(image)
print("Added a watermark to", image) logging.info("Added a watermark to %s." % image)
# return slanted_image # return slanted_image
# def add_watermark ends here # def add_watermark ends here


Expand All @@ -140,7 +143,7 @@ def centered(textstring, font_spec):
return coordinate return coordinate
# def centered ends here # 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""" """Create a cover using PIL"""


img = Image.new("RGB", DIMENSIONS, BACKGROUND) img = Image.new("RGB", DIMENSIONS, BACKGROUND)
Expand All @@ -151,6 +154,9 @@ def create_cover(metadata_dict, image_directory, cover_filename):
title_text = metadata_dict['eoa_title'] title_text = metadata_dict['eoa_title']
subtitle_text = metadata_dict['eoa_subtitle'] subtitle_text = metadata_dict['eoa_subtitle']
authors_text = format_authors(metadata_dict['eoa_authors']) 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']) series_number_text = "{0} {1}".format(metadata_dict['eoa_series'], metadata_dict['eoa_number'])


if metadata_dict['eoa_series'].lower() == "sources": if metadata_dict['eoa_series'].lower() == "sources":
Expand Down Expand Up @@ -207,40 +213,57 @@ def create_cover(metadata_dict, image_directory, cover_filename):
img.paste(resized_image, (int(coord), 1200)) img.paste(resized_image, (int(coord), 1200))


img.save(cover_filename) img.save(cover_filename)
print("Wrote", cover_filename) logging.info("Wrote %s." % cover_filename)

watermark = add_watermark(cover_filename, "Automatically generated cover.\nDo not use in production!")
# def create_cover ends here # def create_cover ends here


if __name__ == '__main__': if __name__ == '__main__':
parser = argparse.ArgumentParser() 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("-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("-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() args = parser.parse_args()


IMAGES = args.image_dir if args.config:

# if os.path.exists("publication.cfg"):
if os.path.exists("publication.cfg"): logging.info("Using %s as publication config" % (args.config))
logging.debug("Using %s as publication config" % (args.config))
config = configparser.ConfigParser() config = configparser.ConfigParser()


config.read(args.config) config.read(args.config)


list_of_authors = list(set(config['Authors'].values())) list_of_authors = []
for author in list_of_authors:
if len(author) == 0: for entry in range(0, 5):
list_of_authors.remove(author) 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_series' : config['Technical']['Serie']})
METADATA_DICT.update({'eoa_number' : config['Technical']['Number']}) METADATA_DICT.update({'eoa_number' : config['Technical']['Number']})
METADATA_DICT.update({'eoa_title' : config['Technical']['Title']}) METADATA_DICT.update({'eoa_title' : config['Technical']['Title']})
METADATA_DICT.update({'eoa_subtitle' : config['Technical']['Subtitle']}) METADATA_DICT.update({'eoa_subtitle' : config['Technical']['Subtitle']})
METADATA_DICT.update({'eoa_authors' : list_of_authors}) METADATA_DICT.update({'eoa_authors' : list_of_authors})
METADATA_DICT.update({'eoa_zusatz' : config['Authors']['Zusatz']})
else: else:
logging.debug("Using the built-in metadata as publication config") logging.info("Using the built-in metadata as publication config")


OUTFILE = args.output 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 # finis

0 comments on commit dafbe96

Please sign in to comment.