text part in meme pipeline

This commit is contained in:
klemek
2020-04-28 18:11:09 +02:00
parent dffdf656dc
commit a7610c2f01
6 changed files with 86 additions and 29 deletions
+39 -19
View File
@@ -24,42 +24,62 @@ left_wmark.font_size = 0.02
left_wmark.x_range = [0.005, 0.995]
left_wmark.y_range = [0.005, 0.995]
simple_text = Text()
simple_text.align = "left"
simple_text.position = Pos.W
simple_text.font_size = 0.04
simple_text.x_range = [0.01, 0.99]
simple_text.y_range = [0.2, 0.8]
def compute(*args: str, left_wmark_text: Optional[Text] = None, debug: bool = False) -> Optional[Image.Image]:
def compute(*args: str, left_wmark_text: Optional[str] = None, debug: bool = False) -> Optional[Image.Image]:
if len(args) < 1:
return None
parts = utils.split_arguments(args, "-")
images = []
for part in parts:
images += [compute_part(*part, debug=debug)]
img = compute_part(*part, debug=debug)
if img is not None:
images += [img]
if len(images) == 0:
return None
output_image = img_factory.compose_image(images)
watermarks = [right_wmark]
if left_wmark_text is not None:
left_wmark.text = left_wmark_text
watermarks += [left_wmark]
watermarks += [left_wmark.variant(left_wmark_text)]
output_image = img_factory.apply_texts(output_image, watermarks, debug=debug)
return output_image
def compute_part(*args: str, debug: bool = False) -> Optional[Image.Image]:
meme_id = args[0]
meme = meme_db.get_meme(meme_id)
if meme is None:
logger.warning(f"Meme template '{meme_id}' not found")
meme_id = args[0].lower().strip()
if meme_id == "text":
if len(args) < 2:
return None
texts = [simple_text.variant(arg) for arg in args[1:]]
return img_factory.build_text_only(texts, debug=debug)
elif meme_id == "image":
return None
if len(args) > 1:
c = 0
for i in range(len(meme.texts)):
if meme.texts[i].text_ref is None:
if c < len(args) - 1:
meme.texts[i].text = args[c + 1].replace("\\n", "\n")
else:
meme = meme_db.get_meme(meme_id)
if meme is None:
logger.warning(f"Meme template '{meme_id}' not found")
return None
if len(args) > 1:
c = 0
for i in range(len(meme.texts)):
if meme.texts[i].text_ref is None:
if c < len(args) - 1:
meme.texts[i].text = args[c + 1].replace("\\n", "\n")
else:
meme.texts[i].text = ""
c += 1
else:
meme.texts[i].text = ""
c += 1
else:
meme.texts[i].text = meme.texts[meme.texts[i].text_ref].text
return img_factory.build_image(meme.template, meme.texts, debug=debug)
meme.texts[i].text = meme.texts[meme.texts[i].text_ref].text
return img_factory.build_from_template(meme.template, meme.texts, debug=debug)