-
Notifications
You must be signed in to change notification settings - Fork 0
/
Squishy Scale.py
74 lines (61 loc) · 2.25 KB
/
Squishy Scale.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
#Loads pygame
#If it can't, it will attempt to install pygame for you
try:
import pygame
except:
from os import system
system("pip install pygame")
import pygame
#Imports the os.walk function for file scraping
from os import walk
#Scrapes everything in the "Input" folder
Files = []
for (dirpath, dirnames, filenames) in walk("Input"):
Files.extend(filenames)
break
#Keeps only the ".png" files
Files=[File for File in Files if File.endswith(".png")]
#Load the "Pixel" and "Glow" images
PixelImage=pygame.image.load("Pixel.png")
GlowImage=pygame.image.load("Glow.png")
#Does the actual upscaling
def Upscale(Surface):
#Makes a new surface for the upscale to be put onto
BigSurface=pygame.Surface((Surface.get_width()*PixelImage.get_width(),Surface.get_height()*PixelImage.get_height()))
#Pixel Pass
#Iterates over every pixel in the source image, and adds the "Pixel" image to the big image
for x in range(Surface.get_width()):
for y in range(Surface.get_height()):
X=x*PixelImage.get_width()
Y=y*PixelImage.get_height()
PixelImage2=PixelImage.copy()
PixelImage2.fill(Surface.get_at((x,y)))
PixelImage2.blit(PixelImage,(0,0),special_flags=pygame.BLEND_MULT)
BigSurface.blit(PixelImage2,(X,Y))
#Calculates the offset for the glow
Offset=[GlowImage.get_width()-PixelImage.get_width(),GlowImage.get_height()-PixelImage.get_height()]
Offset=[(Offset[0]/2),int(Offset[1]/2)]
#Glow Pass
#Adds the glow for each pixel
for x in range(Surface.get_width()):
for y in range(Surface.get_height()):
X=x*PixelImage.get_width()
Y=y*PixelImage.get_height()
PixelImage2=GlowImage.copy()
PixelImage2.fill(Surface.get_at((x,y)))
PixelImage2.blit(GlowImage,(0,0),special_flags=pygame.BLEND_MULT)
BigSurface.blit(PixelImage2,(X-Offset[0],Y-Offset[1]),special_flags=pygame.BLEND_ADD)
#Function returns the upscaled image
return BigSurface
#Takes a filename, opens it from the "Input" Folder and saves it to the "Output" folder
def LoadScaleSave(Filename):
#Loads the image
Image=pygame.image.load(f"Input/{Filename}")
#Upscales the image
Image=Upscale(Image)
#Saves the image
pygame.image.save(Image,f"Output/{Filename}")
#If this file is being run directly, then convert all the files
if __name__=="__main__":
for File in Files:
LoadScaleSave(File)