Compare commits

..

1 commit

Author SHA1 Message Date
328faa847e reformat with black 2022-01-26 21:20:29 -05:00
2 changed files with 126 additions and 127 deletions

View file

@ -1,37 +1,37 @@
#!/bin/sh
''''exec /usr/bin/env python3 -u "$0" "$@" #'''
__doc__ = 'little script to make irc color art that will probably get you banned'
"""'exec /usr/bin/env python3 -u "$0" "$@" #"""
__doc__ = "little script to make irc color art that will probably get you banned"
# whee, look at this sus shebang workaround to always cause
# unbuffered mode lol
import sys,time,argparse
import sys, time, argparse
from PIL import Image, ImageOps
from color import closestColor
def main(imgPath,delay,ASCIIWIDTH,COLORCHAR,FILLER,SHARPNESS):
im = Image.open(imgPath, 'r')
im = ImageOps.scale(im, ASCIIWIDTH*SHARPNESS / im.width)
def main(imgPath, delay, ASCIIWIDTH, COLORCHAR, FILLER, SHARPNESS):
im = Image.open(imgPath, "r")
im = ImageOps.scale(im, ASCIIWIDTH * SHARPNESS / im.width)
width, height = im.size
pixel_values = list(im.getdata())
currentPixel = 0
for y in range(0, height, 2*SHARPNESS):
for y in range(0, height, 2 * SHARPNESS):
line = []
lastColor=69420
lastColor = 69420
for x in range(0, width, SHARPNESS):
color = closestColor(pixel_values[width*y+x])
color = closestColor(pixel_values[width * y + x])
if color == lastColor:
colorcode = ''
colorcode = ""
else:
colorcode =COLORCHAR.format(color, color)
line.append(colorcode+(FILLER[currentPixel % len(FILLER)]))
lastColor=color
currentPixel+=1
colorcode = COLORCHAR.format(color, color)
line.append(colorcode + (FILLER[currentPixel % len(FILLER)]))
lastColor = color
currentPixel += 1
print(''.join(line))
print("".join(line))
if delay:
time.sleep(delay)
@ -39,18 +39,18 @@ def main(imgPath,delay,ASCIIWIDTH,COLORCHAR,FILLER,SHARPNESS):
if __name__ == "__main__":
parser = argparse.ArgumentParser("banter")
parser.add_argument("file")
parser.add_argument("-d",metavar='delay',default=0)
parser.add_argument("-w",metavar='width',default=80)
parser.add_argument("-s",metavar='sharpness',default=4)
parser.add_argument("--colorfmt",metavar='format',default='\\x03{},{}')
parser.add_argument("--filler",metavar='filler',default='.')
parser.add_argument("-d", metavar="delay", default=0)
parser.add_argument("-w", metavar="width", default=80)
parser.add_argument("-s", metavar="sharpness", default=4)
parser.add_argument("--colorfmt", metavar="format", default="\\x03{},{}")
parser.add_argument("--filler", metavar="filler", default=".")
args = parser.parse_args()
main(
args.file,
float(args.d),
int(args.w),
args.colorfmt.encode().decode('unicode_escape'),
args.filler.encode().decode('unicode_escape'),
int(args.s)
)
args.file,
float(args.d),
int(args.w),
args.colorfmt.encode().decode("unicode_escape"),
args.filler.encode().decode("unicode_escape"),
int(args.s),
)

199
color.py
View file

@ -1,99 +1,99 @@
EXTENDEDCOLORS = {
17: "#472100",
18: "#474700",
19: "#324700",
20: "#004700",
21: "#00472c",
22: "#004747",
23: "#002747",
24: "#000047",
25: "#2e0047",
26: "#470047",
27: "#47002a",
29: "#743a00",
30: "#747400",
31: "#517400",
32: "#007400",
33: "#007449",
34: "#007474",
35: "#004074",
36: "#000074",
37: "#4b0074",
38: "#740074",
39: "#740045",
41: "#b56300",
42: "#b5b500",
43: "#7db500",
44: "#00b500",
45: "#00b571",
46: "#00b5b5",
47: "#0063b5",
48: "#0000b5",
49: "#7500b5",
50: "#b500b5",
51: "#b5006b",
53: "#ff8c00",
54: "#ffff00",
55: "#b2ff00",
56: "#00ff00",
57: "#00ffa0",
58: "#00ffff",
59: "#008cff",
60: "#0000ff",
61: "#a500ff",
62: "#ff00ff",
63: "#ff0098",
65: "#ffb459",
66: "#ffff71",
67: "#cfff60",
68: "#6fff6f",
69: "#65ffc9",
70: "#6dffff",
71: "#59b4ff",
72: "#5959ff",
73: "#c459ff",
74: "#ff66ff",
75: "#ff59bc",
77: "#ffd39c",
78: "#ffff9c",
79: "#e2ff9c",
80: "#9cff9c",
81: "#9cffdb",
82: "#9cffff",
83: "#9cd3ff",
84: "#9c9cff",
85: "#dc9cff",
86: "#ff9cff",
87: "#ff94d3",
89: "#131313",
90: "#282828",
91: "#363636",
92: "#4d4d4d",
93: "#656565",
94: "#818181",
95: "#9f9f9f",
96: "#bcbcbc",
97: "#e2e2e2",
98: "#ffffff",
17: "#472100",
18: "#474700",
19: "#324700",
20: "#004700",
21: "#00472c",
22: "#004747",
23: "#002747",
24: "#000047",
25: "#2e0047",
26: "#470047",
27: "#47002a",
29: "#743a00",
30: "#747400",
31: "#517400",
32: "#007400",
33: "#007449",
34: "#007474",
35: "#004074",
36: "#000074",
37: "#4b0074",
38: "#740074",
39: "#740045",
41: "#b56300",
42: "#b5b500",
43: "#7db500",
44: "#00b500",
45: "#00b571",
46: "#00b5b5",
47: "#0063b5",
48: "#0000b5",
49: "#7500b5",
50: "#b500b5",
51: "#b5006b",
53: "#ff8c00",
54: "#ffff00",
55: "#b2ff00",
56: "#00ff00",
57: "#00ffa0",
58: "#00ffff",
59: "#008cff",
60: "#0000ff",
61: "#a500ff",
62: "#ff00ff",
63: "#ff0098",
65: "#ffb459",
66: "#ffff71",
67: "#cfff60",
68: "#6fff6f",
69: "#65ffc9",
70: "#6dffff",
71: "#59b4ff",
72: "#5959ff",
73: "#c459ff",
74: "#ff66ff",
75: "#ff59bc",
77: "#ffd39c",
78: "#ffff9c",
79: "#e2ff9c",
80: "#9cff9c",
81: "#9cffdb",
82: "#9cffff",
83: "#9cd3ff",
84: "#9c9cff",
85: "#dc9cff",
86: "#ff9cff",
87: "#ff94d3",
89: "#131313",
90: "#282828",
91: "#363636",
92: "#4d4d4d",
93: "#656565",
94: "#818181",
95: "#9f9f9f",
96: "#bcbcbc",
97: "#e2e2e2",
98: "#ffffff",
}
MIRCCOLORS = {
1: (0,0,0),
2: (0,0,127),
3: (0,147,0),
4: (255,0,0),
5: (127,0,0),
6: (156,0,156),
7: (252,127,0),
8: (255,255,0),
9: (0,252,0),
10: (0,147,147),
11: (0,255,255),
12: (0,0,252),
13: (255,0,255),
14: (127,127,127),
15: (210,210,210)
1: (0, 0, 0),
2: (0, 0, 127),
3: (0, 147, 0),
4: (255, 0, 0),
5: (127, 0, 0),
6: (156, 0, 156),
7: (252, 127, 0),
8: (255, 255, 0),
9: (0, 252, 0),
10: (0, 147, 147),
11: (0, 255, 255),
12: (0, 0, 252),
13: (255, 0, 255),
14: (127, 127, 127),
15: (210, 210, 210),
}
@ -101,16 +101,16 @@ colors = {}
# copy the dict lol
for i in MIRCCOLORS:
colors[i]=MIRCCOLORS[i]
colors[i] = MIRCCOLORS[i]
for i in EXTENDEDCOLORS:
hex=EXTENDEDCOLORS[i].lstrip('#')
# https://stackoverflow.com/a/29643643/9406294
rgb=tuple(int(hex[i:i+2], 16) for i in (0, 2, 4))
#print(rgb)
hex = EXTENDEDCOLORS[i].lstrip("#")
colors[i]=rgb
# https://stackoverflow.com/a/29643643/9406294
rgb = tuple(int(hex[i : i + 2], 16) for i in (0, 2, 4))
# print(rgb)
colors[i] = rgb
COLORS = colors
@ -124,7 +124,6 @@ def closestColor(rgb):
diss = {}
for cc in COLORS:
rc, gc, bc = COLORS[cc]
distance = abs(r-rc) + abs(g-gc) + abs(b-bc)
distance = abs(r - rc) + abs(g - gc) + abs(b - bc)
diss[cc] = distance
return min(diss, key=diss.get)