-
Notifications
You must be signed in to change notification settings - Fork 1
/
color_bands.py
99 lines (87 loc) · 2.43 KB
/
color_bands.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
96
97
98
99
from PIL import Image, ImageOps
import numpy as np
from random import shuffle
def gen_bands(path, filename, images=[]):
im = Image.open(path+filename)
im = im.convert('RGBA')
#red
data = np.array(im)
red, green, blue, alpha = data.T
green.fill(0)
blue.fill(0)
im2 = Image.fromarray(data)
fname = 'red_' + filename
im2.save(path + fname)
images.append(fname)
#green
data = np.array(im)
red, green, blue, alpha = data.T
red.fill(0)
blue.fill(0)
im2 = Image.fromarray(data)
fname = 'green_' + filename
im2.save(path + fname)
images.append(fname)
#blue
data = np.array(im)
red, green, blue, alpha = data.T
red.fill(0)
green.fill(0)
im2 = Image.fromarray(data)
fname = 'blue_' + filename
im2.save(path + fname)
images.append(fname)
#alpha
data = np.array(im)
red, green, blue, alpha = data.T
for y in range(len(alpha)):
for x in range(len(alpha[0])):
red[y][x] = alpha[y][x]
green[y][x] = alpha[y][x]
blue[y][x] = alpha[y][x]
im2 = Image.fromarray(data)
fname = 'alpha_' + filename
im2.save(path + fname)
images.append(fname)
#inverted
im2 = im.convert('RGB')
im2 = ImageOps.invert(im2)
fname = 'inverted_' + filename
im2.save(path + fname)
images.append(fname)
#posterized
im2 = im.convert('RGB')
im2 = ImageOps.posterize(im2, 1)
fname = 'posterized_' + filename
im2.save(path + fname)
images.append(fname)
#solarized
im2 = im.convert('RGB')
im2 = ImageOps.solarize(im2, threshold=128)
fname = 'solarized_' + filename
im2.save(path + fname)
images.append(fname)
#randomized
for n in range(3):
im2 = Image.new(im.mode, im.size)
pix = im.load()
pix2 = im2.load()
lista = [i for i in range(256)]
listb = [i for i in lista]
shuffle(listb)
pixdict = dict(zip(lista, listb))
for y in range(im.size[1]):
for x in range(im.size[0]):
rgb = pix[x,y]
tmp = []
for i in rgb:
tmp.append(pixdict[i])
pix2[x,y] = tuple(tmp)
fname = 'random' + str(n + 1) + '_' + filename
im2.save(path + fname)
images.append(fname)
return images
if __name__ == '__main__':
path = './static/'
filename = 'test.png'
gen_bands(path, filename)