diff options
author | AUTOMATIC <16777216c@gmail.com> | 2023-02-04 10:28:53 +0000 |
---|---|---|
committer | AUTOMATIC <16777216c@gmail.com> | 2023-02-04 10:29:04 +0000 |
commit | 40e51fd6efa9c09a82c5ab391dbbd2c806971582 (patch) | |
tree | dbee4dfbe6a0d71005522cd1521b46ae7d5ce690 /modules/images.py | |
parent | 21593c80822e4d477a62ab090fe144e7f611bc2f (diff) | |
download | stable-diffusion-webui-gfx803-40e51fd6efa9c09a82c5ab391dbbd2c806971582.tar.gz stable-diffusion-webui-gfx803-40e51fd6efa9c09a82c5ab391dbbd2c806971582.tar.bz2 stable-diffusion-webui-gfx803-40e51fd6efa9c09a82c5ab391dbbd2c806971582.zip |
add margin parameter to draw_grid_annotations
Diffstat (limited to 'modules/images.py')
-rw-r--r-- | modules/images.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/modules/images.py b/modules/images.py index ae3cdaf4..4bdbd730 100644 --- a/modules/images.py +++ b/modules/images.py @@ -130,7 +130,7 @@ class GridAnnotation: self.size = None
-def draw_grid_annotations(im, width, height, hor_texts, ver_texts):
+def draw_grid_annotations(im, width, height, hor_texts, ver_texts, margin=0):
def wrap(drawing, text, font, line_length):
lines = ['']
for word in text.split():
@@ -194,25 +194,28 @@ def draw_grid_annotations(im, width, height, hor_texts, ver_texts): line.allowed_width = allowed_width
hor_text_heights = [sum([line.size[1] + line_spacing for line in lines]) - line_spacing for lines in hor_texts]
- ver_text_heights = [sum([line.size[1] + line_spacing for line in lines]) - line_spacing * len(lines) for lines in
- ver_texts]
+ ver_text_heights = [sum([line.size[1] + line_spacing for line in lines]) - line_spacing * len(lines) for lines in ver_texts]
pad_top = 0 if sum(hor_text_heights) == 0 else max(hor_text_heights) + line_spacing * 2
- result = Image.new("RGB", (im.width + pad_left, im.height + pad_top), "white")
- result.paste(im, (pad_left, pad_top))
+ result = Image.new("RGB", (im.width + pad_left + margin * (rows-1), im.height + pad_top + margin * (cols-1)), "white")
+
+ for row in range(rows):
+ for col in range(cols):
+ cell = im.crop((width * col, height * row, width * (col+1), height * (row+1)))
+ result.paste(cell, (pad_left + (width + margin) * col, pad_top + (height + margin) * row))
d = ImageDraw.Draw(result)
for col in range(cols):
- x = pad_left + width * col + width / 2
+ x = pad_left + (width + margin) * col + width / 2
y = pad_top / 2 - hor_text_heights[col] / 2
draw_texts(d, x, y, hor_texts[col], fnt, fontsize)
for row in range(rows):
x = pad_left / 2
- y = pad_top + height * row + height / 2 - ver_text_heights[row] / 2
+ y = pad_top + (height + margin) * row + height / 2 - ver_text_heights[row] / 2
draw_texts(d, x, y, ver_texts[row], fnt, fontsize)
|