-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
77 lines (62 loc) · 2.94 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from absl import logging
import numpy as np
from PIL import Image, ImageDraw, ImageFont
def center_crop(width, height, img):
resample = {'box': Image.BOX, 'lanczos': Image.LANCZOS}['lanczos']
crop = np.min(img.shape[:2])
img = img[(img.shape[0] - crop) // 2: (img.shape[0] + crop) // 2,
(img.shape[1] - crop) // 2: (img.shape[1] + crop) // 2] # center crop
try:
img = Image.fromarray(img, 'RGB')
except:
img = Image.fromarray(img)
img = img.resize((width, height), resample) # resize the center crop from [crop, crop] to [width, height]
return np.array(img).astype(np.uint8)
def set_logger(log_level='info', fname=None):
import logging as _logging
handler = logging.get_absl_handler()
formatter = _logging.Formatter('%(asctime)s - %(filename)s - %(message)s')
handler.setFormatter(formatter)
logging.set_verbosity(log_level)
if fname is not None:
handler = _logging.FileHandler(fname)
handler.setFormatter(formatter)
logging.get_absl_logger().addHandler(handler)
def get_nnet(name, **kwargs):
if name == 'uvit_multi_post_ln_v1':
from libs.uvit_multi_post_ln_v1 import UViT
return UViT(**kwargs)
else:
raise NotImplementedError(name)
def drawRoundRec(draw, color, x, y, w, h, r):
drawObject = draw
'''Rounds'''
drawObject.ellipse((x, y, x + r, y + r), fill=color)
drawObject.ellipse((x + w - r, y, x + w, y + r), fill=color)
drawObject.ellipse((x, y + h - r, x + r, y + h), fill=color)
drawObject.ellipse((x + w - r, y + h - r, x + w, y + h), fill=color)
'''rec.s'''
drawObject.rectangle((x + r / 2, y, x + w - (r / 2), y + h), fill=color)
drawObject.rectangle((x, y + r / 2, x + w, y + h - (r / 2)), fill=color)
def add_water(img, text='Pdddle_UniDiffuser', pos=3):
width, height = img.size
scale = 4
scale_size = 0.5
img = img.resize((width * scale, height * scale), Image.LANCZOS)
result = Image.new(img.mode, (width * scale, height * scale), color=(255, 255, 255))
result.paste(img, box=(0, 0))
delta_w = int(width * scale * 0.27 * scale_size) # text width
delta_h = width * scale * 0.05 * scale_size # text height
postions = np.array([[0, 0], [0, height * scale - delta_h], [width * scale - delta_w, 0],
[width * scale - delta_w, height * scale - delta_h]])
postion = postions[pos]
# 文本
draw = ImageDraw.Draw(result)
fillColor = (107, 92, 231)
setFont = ImageFont.truetype("assets/ArialBoldMT.ttf", int(width * scale * 0.05 * scale_size))
delta = 20 * scale_size
padding = 15 * scale_size
drawRoundRec(draw, (223, 230, 233), postion[0] - delta - padding, postion[1] - delta - padding,
w=delta_w + 2 * padding, h=delta_h + 2 * padding, r=50 * scale_size)
draw.text((postion[0] - delta, postion[1] - delta), text, font=setFont, fill=fillColor)
return result.resize((width, height), Image.LANCZOS)