diff --git a/smallprint.py b/smallprint.py index 2d2d320..52a68fd 100644 --- a/smallprint.py +++ b/smallprint.py @@ -3,12 +3,15 @@ # python imports import argparse import logging +import math import datetime +import os import os.path # 3rd party imports from escpos.printer import Usb, Dummy, File import feedparser +from PIL import Image import re import requests @@ -178,9 +181,32 @@ def print_file(printer, file): printer.text(line) file.close() - printer.text("\n\n") +def print_image(printer, image): + """ + Prints an image + """ + # Load the image to adjust it + im = Image.open(image) + + ratio = float(im.size[0]) / float(im.size[1]) + + if im.size[0] > im.size[1]: + # The image needs to be rotated + width = math.floor(384 * ratio) + im = im.resize((width, 384)) + im = im.transpose(Image.ROTATE_90) + + else: + height = math.floor(384.0 * ratio) + im = im.resize((384, height)) + + im.save("temp.png") + printer.hw("INIT") + printer.image("temp.png") + os.remove("temp.png") + def clear_html(text): cleanr = re.compile('<.*?>|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});') @@ -198,6 +224,7 @@ def create_parser(): parser.add_argument("--news", default=False) parser.add_argument("--text", nargs=1, default=None) parser.add_argument("--file", default=None, type=open) + parser.add_argument("--image", nargs=1, default=None) return parser @@ -209,7 +236,7 @@ if __name__ == "__main__": args = parser.parse_args() if args.text: - print_text(printer, args.text) + print_text(printer, args.text[0]) printer.text("\n\n") if args.file: @@ -229,3 +256,7 @@ if __name__ == "__main__": printer.text("\n\n") print_rss(printer, "https://www.space.com/feeds/all", news=2) printer.text("\n\n") + + if args.image: + print_image(printer, args.image[0]) + printer.text("\n\n")