-
Notifications
You must be signed in to change notification settings - Fork 0
/
image_analyzer.py
95 lines (90 loc) · 3.94 KB
/
image_analyzer.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#/usr/bin/python3
import PIL.Image as Image
import PIL.ImageColor
from end import *
import PIL
import os
def extrarctFileType(file):
"""
Deletes the file's extension type from its name.
Parameters:
file: The file's name with its extension (string)
Returns:
newFileName: The file's name without its extension (string)
"""
fileExtensions = (".jpg",".jpeg",".png")
fileName = [(lettre) for lettre in file]
newFileName = ''
for extension in fileExtensions:
if extension == fileExtensions[0] or extension == fileExtensions[2]:
for letter in range(len(fileName) - 4):
newFileName += fileName[letter]
return(newFileName)
else:
for letter in range(len(fileName) - 5):
newFileName += fileName[letter]
return(newFileName)
def analyze_image(mode,image,backgroundColor="white"):
"""
Analyzes an image and replaces the the greens with black or white depending on what background color is chosen by the user.
Parameters:
mode: Helps the program determine where the analyzed image should be saved
image: The image to analyze
backgroundColor: The color the script will put instead of the green screen ("black" or "white", default option is "white")
Returns:
Saves the image in the "output" folder of the project
"""
img = Image.open(image)
newFileName = extrarctFileType(image)
lenght, height = img.size
white, black = (255,255,255), (0,0,0)
for i in range(height):
for j in range(lenght):
if img.getpixel((j,i)) <= (25, 225, 25):
if backgroundColor == "white":
img.putpixel((j,i),white)
else:
img.putpixel((j,i), black)
else:
if backgroundColor == "white":
img.putpixel((j,i), black)
else:
img.putpixel((j,i), white)
if mode == "folder":
img.save("../output/" + newFileName + ".png")
else:
img.save("./output/" + newFileName + ".png")
def image_analyzer(mode,file,backgroundColor="white"):
"""
Analyzes a bunch of screenshots taken from a video game or a single one, depending on the values entered by the user.
Parameters:
mode: Whether the program should analyze a single image or a bunch of images in a folder ("image" or "folder")
file: The image's name (with its extension) to analyze
backgroundColor: The color the script will put instead of the green screen ("black" or "white", default option is "white")
"""
assert type(file) == str or file == None, "You must enter a valid folder name (with its extension)!"
assert backgroundColor == "white" or backgroundColor == "black", "The background color must be black or white!"
assert mode == "file" or mode == "folder", "The mode should be either \"file\" or \"folder\""
done = 0
if mode == "folder":
os.chdir('./images/')
for file in os.listdir(os.getcwd()):
analyze_image(mode,file,backgroundColor)
done+=1
print("Images analyzed: ", done)
else:
analyze_image(mode,image,backgroundColor)
if not "output" in os.listdir():
os.mkdir("./output",0o755)
print("Directory \"output\" not found, created \"output\" directory.")
mode = input("\nDo you want the program to analyze a bunch of images inside of a folder or do you want it to analyze a single image?\n(\"file\" or \"folder\")\n")
if mode == "file":
image = input("\nPlease type the name of the image to analyze WITH IT'S EXTENSION!\n")
color = input("\nWhat color do you want the background to be?\n(\"black\" or \"white\")\n")
if color == "":
color = "white"
if mode == "file":
image_analyzer(mode,image,color)
else:
image_analyzer(mode,None,color)
end_script()