10
10
import os
11
11
import re
12
12
import argparse
13
+ import tomllib
13
14
14
15
if (not os .path .exists ('PyASCII/temp' )):
15
16
os .makedirs ('PyASCII/temp' )
21
22
if os .path .isfile (file_path ):
22
23
os .remove (file_path )
23
24
25
+ def load_filters ():
26
+ with open ('filters.toml' , 'rb' ) as file :
27
+ filters = tomllib .load (file )
28
+ return filters
29
+
24
30
#### Image Tools ####
25
31
26
32
# Muda a resolução da imagem sem perder a proporção
@@ -37,11 +43,6 @@ def resize_image(image, ref_size):
37
43
cols = ref_size
38
44
return image .resize ((rows , cols ), Image .LANCZOS )
39
45
40
- # Função para obter um sprite individual
41
- def get_sprite (x , y ):
42
- sprite = sprite_sheet_image .crop ((x , y , x + sprite_width , y + sprite_height ))
43
- return sprite
44
-
45
46
# Transformar o valor do pixel de 0 a 255 em 0 a 16
46
47
def pixel_value_to_index (pixel_value ):
47
48
return int ((pixel_value / 255 ) * 16 )
@@ -94,17 +95,14 @@ def salvar_frames(frames, output_path, fps):
94
95
video .release ()
95
96
96
97
def load_sprites (sprite_sheet_image , sprite_width , sprite_height , monochrome_filter ):
98
+ # Função para obter um sprite individual
99
+ def get_sprite (x , y ):
100
+ sprite = sprite_sheet_image .crop ((x , y , x + sprite_width , y + sprite_height ))
101
+ return sprite
102
+
97
103
sheet_width , sheet_height = sprite_sheet_image .size
98
- filters = {"Orange" : ((252 , 176 , 32 ), (10 , 6 , 3 )),
99
- "Capuccino" :((200 , 185 , 150 ), (61 , 49 , 40 )),
100
- "Brat" : ((137 , 205 , 0 ), (0 , 0 , 0 )),
101
- "Fairy" : ((174 , 255 , 223 ), (90 , 84 , 117 )),
102
- "Bloody" : ((255 , 42 , 0 ), (43 , 12 , 0 )),
103
- "Lavender" : ((196 , 167 , 231 ), (35 , 33 , 54 )),
104
- "Cyan" : ((0 , 204 , 255 ), (0 , 34 , 43 )),
105
- "Vapor" : ((250 , 185 , 253 ), (75 , 123 , 222 )),
106
- "Matrix" : ((0 ,255 ,0 ), (0 ,39 ,6 ))}
107
-
104
+ filters = load_filters ()
105
+
108
106
if monochrome_filter != None :
109
107
if monochrome_filter not in filters :
110
108
print (f"[ KeyError ] '{ monochrome_filter } ' is not recognized as a filter!" )
@@ -114,9 +112,9 @@ def load_sprites(sprite_sheet_image, sprite_width, sprite_height, monochrome_fil
114
112
for x in range (0 , sheet_width ):
115
113
pixel_value = sprite_sheet_image .getpixel ((x , y ))
116
114
if pixel_value == (255 , 255 , 255 , 255 ):
117
- sprite_sheet_image .putpixel ((x , y ), filters [monochrome_filter ][0 ])
115
+ sprite_sheet_image .putpixel ((x , y ), tuple ( filters [monochrome_filter ][0 ]) )
118
116
else :
119
- sprite_sheet_image .putpixel ((x , y ), filters [monochrome_filter ][1 ])
117
+ sprite_sheet_image .putpixel ((x , y ), tuple ( filters [monochrome_filter ][1 ]) )
120
118
121
119
sprites = []
122
120
for y in range (0 , sprite_sheet_image .height , sprite_height ):
@@ -253,7 +251,7 @@ def parse_arguments():
253
251
254
252
parser .add_argument ('-r' , '--resolution' , metavar = 'RES' , default = 720 , type = int , help = 'Sets the resolution of the output image.' )
255
253
parser .add_argument ('-f' , '--filter' , metavar = 'FILTER' , default = None ,
256
- choices = [ "Orange" , "Capuccino" , "Brat" , "Fairy" , "Bloody" , "Lavender" , "Cyan" , "Vapor" , "Matrix" ] , help = 'Applies a filter to the output.' )
254
+ choices = list ( load_filters (). keys ()) , help = 'Applies a filter to the output.' )
257
255
parser .add_argument ('-m' , '--media' , metavar = 'MEDIA' , required = True , help = 'Specifies the image/video to be used as input.' )
258
256
parser .add_argument ("-c" , "--contrast" , action = 'store_true' , help = 'Increases image contrast.' )
259
257
parser .add_argument ("-o" , "--output" , metavar = "PATH" , default = None , help = 'Changes the output path.' )
0 commit comments