-
Notifications
You must be signed in to change notification settings - Fork 60
/
usdu_patch.py
71 lines (43 loc) · 1.76 KB
/
usdu_patch.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
# Make some patches to the script
from repositories import ultimate_upscale as usdu
import modules.shared as shared
import math
from PIL import Image
if (not hasattr(Image, 'Resampling')): # For older versions of Pillow
Image.Resampling = Image
#
# Instead of using multiples of 64, use multiples of 8
#
def round_length(length, multiple=8):
return math.ceil(length / multiple) * multiple
# Upscaler
old_init = usdu.USDUpscaler.__init__
def new_init(self, p, image, upscaler_index, save_redraw, save_seams_fix, tile_width, tile_height):
p.width = round_length(image.width * p.upscale_by)
p.height = round_length(image.height * p.upscale_by)
old_init(self, p, image, upscaler_index, save_redraw, save_seams_fix, tile_width, tile_height)
usdu.USDUpscaler.__init__ = new_init
# Redraw
old_setup_redraw = usdu.USDURedraw.init_draw
def new_setup_redraw(self, p, width, height):
mask, draw = old_setup_redraw(self, p, width, height)
p.width = round_length(self.tile_width + self.padding)
p.height = round_length(self.tile_height + self.padding)
return mask, draw
usdu.USDURedraw.init_draw = new_setup_redraw
# Seams fix
old_setup_seams_fix = usdu.USDUSeamsFix.init_draw
def new_setup_seams_fix(self, p):
old_setup_seams_fix(self, p)
p.width = round_length(self.tile_width + self.padding)
p.height = round_length(self.tile_height + self.padding)
usdu.USDUSeamsFix.init_draw = new_setup_seams_fix
#
# Make the script upscale on a batch of images instead of one image
#
old_upscale = usdu.USDUpscaler.upscale
def new_upscale(self):
old_upscale(self)
shared.batch = [self.image] + \
[img.resize((self.p.width, self.p.height), resample=Image.LANCZOS) for img in shared.batch[1:]]
usdu.USDUpscaler.upscale = new_upscale