99 problems, lack of color ain't one

99 color support
This commit is contained in:
Gordon Shumway 2019-03-20 22:13:41 -04:00 committed by GitHub
parent a872d542b6
commit 9a107645e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 86 additions and 18 deletions

View File

@ -14,7 +14,7 @@ import supybot.callbacks as callbacks
import supybot.ircmsgs as ircmsgs
import os
import requests
from PIL import Image
from PIL import Image, ImageFilter
import numpy as np
import sys, math
from fake_useragent import UserAgent
@ -101,22 +101,90 @@ class ASCII(callbacks.Plugin):
Given PIL Image, return average RGB value
"""
pixel = pixel[:3]
colors = {"white": (211, 215, 207),
"black": (46, 52, 54),
"blue":(52, 101, 164),
"green":(78, 154, 6),
"red":(204, 0, 0),
"brown":(143, 57, 2),
"purple":(92, 53, 102),
"orange":(206, 92, 0),
"yellow":(196, 160, 0),
"light green":(115, 210, 22),
"teal":(17, 168, 121),
"light blue":(88, 161, 157),
"dark blue":(87, 121, 158),
"pink":(160, 67, 101),
"dark grey":(85, 87, 83),
"light grey":(136, 137, 133)}
colors = {
"16":(71,0,0),
"17":(71,33,0),
"18":(71,71,0),
"19":(50,71,0),
"20":(0,71,0),
"21":(0,71,44),
"22":(0,71,71),
"23":(0,39,71),
"24":(0,0,71),
"25":(46,0,71),
"26":(71,0,71),
"27":(71,0,42),
"28":(116,0,0),
"29":(116,58,0),
"30":(116,116,0),
"31":(81,116,0),
"32":(0,116,0),
"33":(0,116,73),
"34":(0,116,116),
"35":(0,64,116),
"36":(0,0,116),
"37":(75,0,116),
"38":(116,0,116),
"39":(116,0,69),
"40":(181,0,0),
"41":(181,99,0),
"42":(181,181,0),
"43":(125,181,0),
"44":(0,181,0),
"45":(0,181,113),
"46":(0,181,181),
"47":(0,99,181),
"48":(0,0,181),
"49":(117,0,181),
"50":(181,0,181),
"51":(181,0,107),
"52":(255,0,0),
"53":(255,140,0),
"54":(255,255,0),
"55":(178,255,0),
"56":(0,255,0),
"57":(0,255,160),
"58":(0,255,255),
"59":(0,140,255),
"60":(0,0,255),
"61":(165,0,255),
"62":(255,0,255),
"63":(255,0,152),
"64":(255,89,89),
"65":(255,180,89),
"66":(255,255,113),
"67":(207,255,96),
"68":(111,255,111),
"69":(101,255,201),
"70":(109,255,255),
"71":(89,180,255),
"72":(89,89,255),
"73":(196,89,255),
"74":(255,102,255),
"75":(255,89,188),
"76":(255,156,156),
"77":(255,211,156),
"78":(255,255,156),
"79":(226,255,156),
"80":(156,255,156),
"81":(156,255,219),
"82":(156,255,255),
"83":(156,211,255),
"84":(156,156,255),
"85":(220,156,255),
"86":(255,156,255),
"87":(255,148,211),
"88":(0,0,0),
"89":(19,19,19),
"90":(40,40,40),
"91":(54,54,54),
"92":(77,77,77),
"93":(101,101,101),
"94":(129,129,129),
"95":(159,159,159),
"96":(188,188,188),
"97":(226,226,226),
"98":(255,255,255)}
manhattan = lambda x,y : abs(x[0] - y[0]) + abs(x[1] - y[1]) + abs(x[2] - y[2])
distances = {k: manhattan(v, pixel) for k, v in colors.items()}
color = min(distances, key=distances.get)
@ -187,7 +255,7 @@ class ASCII(callbacks.Plugin):
# get color value
color = self.getAverageC(colormap[j][i].tolist())
# append ascii char to string
aimg[j] += ircutils.mircColor(gsval, color, None)
aimg[j] += "\x03{0}{1}".format(color, gsval)
# return txt image
output = aimg
for line in output: