# What colour is this? [closed]

Given three number values - being the Red, Green, and Blue elements of a colour (eight bits per channel, 0 to 255) - your program must output the name of the given colour.

For example;

Input:  255, 0, 0
Output: Red


or;

Input:  80, 0, 0
Output: Dark Red


This is a popularity contest, so whichever answer has the most votes by the first of July wins.

Ispired by: Show the input RGB color

• The name according to what? Jun 24 '14 at 3:26
• Will common sense do? Jun 24 '14 at 3:27
• It's a popularity contest - so the point is creativity. Jun 24 '14 at 10:37
• I'm badly colorblind. Code that would respond in a manner accurate to my vision would take many fewer characters than what the rest of you are coming up with. Jun 24 '14 at 17:27
• @michaelsterm this isn't code golf. If you post an answer with a link to a wiki page explaining your type of colour blindness, then it could be quite interesting. Jun 24 '14 at 21:13

# Python

This is a Python script that uses the results from xkcd's Color Survey, in which Randall Munroe asked thousands of people the exact same question. He arrived at the following chart:

The survey only has data on fully-saturated colors (I guess non-saturated colors would all be described as 'grayish'). This means we have to do some color-related tricks to force our input to become fully saturated.

What I've done here is just convert the input color to HSV, crank up the saturation, and call it a day. This is probably not very correct from a color perception point of view, but it works well enough here - and it's simple enough that you only need the standard library. Batteries included indeed.

The script expects satfaces.txt, from here (mirror), to be in the current directory.

import sys, colorsys

n = (int(sys.argv[1], 16))
r = ((n & 0xff0000) >> 16) / 255.0
g = ((n & 0x00ff00) >> 8) / 255.0
b = ((n & 0x0000ff)) / 255.0

(h, s, v) = colorsys.rgb_to_hsv(r, g, b)
(r, g, b) = colorsys.hsv_to_rgb(h, 1, v)

match = "[{}, {}, {}]".format(int(r*255), int(g*255), int(b*255))

for line in open("satfaces.txt"):
if line.startswith(match):
print("You were thinking of: " + line.split("] ")[1].strip())
break


Some example runs:

$python color.py CEB301 You were thinking of: yellow$ python color.py CC9900
You were thinking of: orange
$python color.py CC0000 You were thinking of: red$ python color.py 0077FF
You were thinking of: blue


And here are the colors:

I'd say that's pretty close.

• The XKCD survey is the first thing I thought of when I saw the question. :) Jun 24 '14 at 10:14
• @undergroundmonorail Same here. I'm pretty sure one could just replace my brain with a black box that only references xkcd all day Jun 24 '14 at 10:16
• For more fun, you can try seeing if there's an exact match in rgb.txt first: xkcd.com/color/rgb.txt Jun 24 '14 at 12:01
• @Charles Hmm, that would be pretty easy indeed. On the other hand, you'd need an additional data file. I think I'll leave the baby shit detection feature to other competitors :) Jun 24 '14 at 12:14
• Well done and congratulations. The winner by a long shot (though neck and neck for a while there) is @WanderNauta. Jun 30 '14 at 23:13

## Update with GUI!

I take the color list from this Wikipedia page (and the related pages).

I also included some NLG to produce results like "Bulgarian Rose with slightly less green and blue" and some variants of it. Try to play along to see whether you can guess the true "Bulgarian Rose" using those feedbacks. :)

The algorithm will try to find the color which is the closest to the input, as defined by the Euclidean distance. So you can input any number triplet and it will give the color which is the closest to that triplet.

(the code accepts "comma-space separated", "space separated", or "comma separated" values)

### Warning

This code connects to Wikipedia, and so it requires Internet connection in order to run the first time (and write the information in a file in the same dictionary). The subsequent times, though, it will read from file. If you want the offline version, the code is available at this Ideone link (with sample run).

Code:

import re, os
from bs4 import BeautifulSoup as BS
import requests
import cPickle as pickle
import random

def encode_color(text):
return tuple(map(int, re.split(', |,| ', text)))

def color_name(col):
global color_map, color_nums
arr = color_nums
closest = None
min_dist = 10**8
for color in arr:
dist = sum((color[i]-col[i])**2 for i in range(3))
if dist < min_dist:
closest = color
min_dist = dist
result = color_map[closest]
rgb = ['red', 'green', 'blue']
slightly_more = ['with a hint of', 'with traces of', 'with slightly more']
slightly_less = ['with subdued', 'with slightly less']
more_more = ['with more', 'with strong hint of']
more_less = ['with less', 'with diminished']
count = 0
for i in range(3):
expl_list = ['']
if 5 < col[i]-closest[i] < 10:
expl_list = slightly_more
count += 1
elif 10 <= col[i]-closest[i]:
expl_list = more_more
count += 2
elif -10 <= col[i]-closest[i] < -5:
expl_list = slightly_less
count -= 1
elif col[i]-closest[i] <= -10:
expl_list = more_less
count -= 2
expl = expl_list[random.randint(0, len(expl_list)-1)]
if expl is not '':
else:
if 3 <= count <= 4:
result = 'A slightly brighter '+result
elif 4 < count:
result = 'A brighter '+result
elif -4 <= count <= -3:
result = 'A slightly darker '+result
elif count < -4:
result = 'A darker '+result
elif count > 0:
elif count < 0:
return result

'http://en.wikipedia.org/wiki/List_of_colors:_G%E2%80%93M',
'http://en.wikipedia.org/wiki/List_of_colors:_N%E2%80%93Z']

def is_color(tag):
return tag.name == 'th' and len(tag.contents)==1 and tag.contents[0].name=='a'

def parse_color(hexa):
return (int(hexa[0:2], 16), int(hexa[2:4], 16), int(hexa[4:6], 16))

if os.path.exists('parse_wiki_color.pickle'):
with open('parse_wiki_color.pickle', 'rb') as infile:
else:
color_map = {}
color_nums = []
for color in soup.find_all(is_color):
try:
color_num = parse_color(color.next_sibling.next_sibling.string[1:])
color_nums.append(color_num)
color_map[color_num] = str(color.a.string)
except:
continue
color_nums = sorted(color_nums)
with open('parse_wiki_color.pickle', 'wb') as outfile:
pickle.dump((color_map, color_nums), outfile, protocol=2)

def main(event=None):
global var, col_name, col_disp
text = var.get()
color = encode_color(text)
result = color_name(color)
col_name.set(result)
col_rgb.set(color)
var.set('')
col_disp.configure(background='#%02x%02x%02x' % color)

from Tkinter import *
root = Tk()
frame = Frame(root)
frame.pack()
caption = Label(frame, text='Enter RGB color:')
caption.pack(side=LEFT)
var = StringVar()
entry = Entry(frame, textvariable=var)
entry.focus_set()
entry.pack(side=LEFT)
entry.bind('<Return>',func=main)
button = Button(frame, text='Get name', command=main)
button.pack(side=LEFT)
col_rgb = StringVar()
col_rgb_disp = Label(root, textvariable=col_rgb)
col_rgb_disp.pack()
col_name = StringVar()
col_label = Label(root, textvariable=col_name)
col_label.pack()
col_disp = Label(root)
col_disp.pack()
root.geometry('400x200')
root.mainloop()

• Good, but you need to make your terminology a little more pretentious. You should change slightly more to with a hint of and slightly less to subdued. Jun 24 '14 at 8:55
• @steveverrill: Updated! Jun 24 '14 at 10:33
• Impressive. +1 it is. Jun 24 '14 at 10:51
• is this python? Jun 25 '14 at 18:35
• I've never got so many votes in StackExchange before. Thanks everyone! Jun 30 '14 at 10:43

### JavaScript

The following function is written with canine users in mind:

function getColorName(r, g, b) {
return "gray";
}


For the more refined dogs out there:

function getColorName(r, g, b) {
var gray = (0.21*r + 0.71*g + 0.07*b);
if (gray < 64)
return "black";
else if (gray < 128)
return "dark gray";
else if (gray < 192)
return "light gray";
else if (gray < 256)
return "white";
else
whimper();
}

• canines do actually see color though Jun 24 '14 at 20:59
• @Pinna_be Sssh, I know, but you are ruining the joke. ;) Jun 24 '14 at 21:02
• roses are yellow / violets are blue / dogs can see color / just not quite like you Jun 25 '14 at 3:04
• +1 else whimper(); - love it
– user8777
Jun 25 '14 at 10:54
• Food is food, who cares what colour it is... ;) Jun 26 '14 at 7:38

# Javascript

window.location = 'http://www.color-hex.com/color/' + 'ff00ff'

• I like this one. Jun 24 '14 at 21:51

# Mathematica

Update: Added a parameter for setting the number of closest colors to display. The default is 5 colors.

Given the RGB values of an unnamed color, the following finds the n nearest colors from a list of 140 HTML color names. It then plots the unnamed color and its 5 nearest neighbors in a 3-space, with axes for Red, Green, and Blue. In the plot label it names the nearest color and provides its RGB values.

colorInterpret[rgb_,n_: 5]:=
Module[{colorData,valsRGB,pts,closest},
colorData=({ColorData["HTML",#],#}&/@ColorData["HTML","Range"][[1]])/.{RGBColor[x__]:> {x}};
valsRGB=colorData[[All,1]];
pts=Append[colorData[[Position[valsRGB,#]&/@Nearest[valsRGB,rgb,n]//Flatten]],{rgb,"Unnamed Color"}];
closest=pts[[1]];
Graphics3D[{PointSize[.05],
{RGBColor@@#,Point[#],Text[Style[#2,Black,14],(#-{.01,.01,.01})]}&@@@pts
},
Axes-> True,
PlotLabel-> Row[{"closest color: ", closest}],
ImageSize-> 600,
BaseStyle-> 14,
AxesLabel->{Style["Red",18],Style["Green",18],Style["Blue",18]}]]


Examples

Display the 5 closest colors:

 colorInterpret[{.55, .86, .69}]


Display the 15 closest colors:

• Nice visualisation! Jun 29 '14 at 18:53
• Really awesome solution, +1 for 3-dimensional visualization. Jun 30 '14 at 17:28

# CJam

l~]:X;"xkcd.com/color/rgb.txt"gN%"  "f%{[1=1>eu2/{:~Gb}%X]z{:-}%2f#:+}$0=0=  This gets the list of colors from xkcd and finds the nearest one. Note: the space-looking string in the middle is actually one tab. To run it, please use the interpreter from http://sf.net/p/cjam Example: Input 147 125 0 Output baby poop ## R R has an embedded list of 657 color names for plotting purposes. The following code take input from user, and computes the distance between this rgb input and the rgb value of those 657 colors and outputs the name of the closest one. a=as.integer(strsplit(readline(),", ")[[1]]);color_list=sapply(colors(),col2rgb);names(which.min(colSums(abs(apply(color_list,2,function(x)x-a)))))  Ungolfed: a <- as.integer(strsplit(readline(),", ")[[1]]) #Ask user input as stdin, and process it color_list <- sapply(colors(),col2rgb) #Convert the color name list into an RGB matrix #Computes the difference with user input, adds the absolute value and output the name of the element with the minimal value names(which.min(colSums(abs(apply(color_list, 2, function(x)x-a)))))  Examples: > a=as.integer(strsplit(readline(),", ")[[1]]);color_list=sapply(colors(),col2rgb);names(which.min(colSums(abs(apply(color_list,2,function(x)x-a))))) 80, 0, 2 [1] "darkred" > a=as.integer(strsplit(readline(),", ")[[1]]);color_list=sapply(colors(),col2rgb);names(which.min(colSums(abs(apply(color_list,2,function(x)x-a))))) 150, 150, 150 [1] "gray59" > a=as.integer(strsplit(readline(),", ")[[1]]);color_list=sapply(colors(),col2rgb);names(which.min(colSums(abs(apply(color_list,2,function(x)x-a))))) 0, 200, 255 [1] "deepskyblue" > a=as.integer(strsplit(readline(),", ")[[1]]);color_list=sapply(colors(),col2rgb);names(which.min(colSums(abs(apply(color_list,2,function(x)x-a))))) 255, 100, 70 [1] "tomato"  Edit: Same idea but using the list of name from colorHexa: a=strsplit(xpathSApply(htmlParse("http://www.colorhexa.com/color-names"),"//li",xmlValue),"#") n=sapply(a,[,1) r=apply(do.call(rbind,strsplit(sapply(a,[,2)," "))[,2:4],2,as.integer) n[which.min(colSums(abs(apply(r,1,-,as.integer(strsplit(readline(),", ")[[1]])))))]  Example: > a=strsplit(xpathSApply(htmlParse("http://www.colorhexa.com/color-names"),"//li",xmlValue),"#") > n=sapply(a,[,1) > r=apply(do.call(rbind,strsplit(sapply(a,[,2)," "))[,2:4],2,as.integer) > n[which.min(colSums(abs(apply(r,1,-,as.integer(strsplit(readline(),", ")[[1]])))))] 208, 32, 12 [1] " Fire engine red "  • Not sure why you golfed it. Jun 24 '14 at 15:01 • 1) Because it amuses me. 2) I didn't golf it, i just made it a one-liner so that readline doesn't read the following line of code as if it was stdin in interactive mode. I used the word "ungolfed" to say "indented, with line breaks and comments". If I had really golfed it i wouldn't have used color_list as variable name. Jun 25 '14 at 7:06 • @plannapus You're contradicting yourself; you golfed it because it amused you but you didn't golf it. :P Nice solution anyway, and the right language for the job. Jun 29 '14 at 18:56 # Perl Expects http://xkcd.com/color/rgb.txt in current directory. Displays five closest colours with nice percentage. ## Example run > perl code.pl 147,125,0 99.87% baby poop 98.44% yellowish brown 98.31% puke brown 97.79% poo 97.27% diarrhea  ## Code #!perl -w use strict; sub hex2rgb ($) {
my ($h) = @_; map {hex} ($h=~/[0-9a-fA-F]{2}/g)
}

sub distance () {
my ($acol1,$acol2) = @_;
my $r = 0;$r += abs($acol1->[$_] - $acol2->[$_]) for (0..$#$acol1);
$r } sub read_rgb { open my$rgb, '<', 'rgb.txt' or die $!; my @col; while (<$rgb>) {
my ($name,$hex) = split /\t#/;
my @rgb = hex2rgb $hex; push @col, [@rgb,$name];
}
close $rgb; \@col } my$acolours = read_rgb;
my @C = split /, */, <>;

printf "%.02f%% %s\n", (768-$_->[0])/768*100,$_->[4] for
(sort {$a->[0] <=>$b->[0]}
map [distance(\@C, $_), @$_], @$acolours)[0..4];  • perfect example! But also a good solution. Jun 30 '14 at 14:35 # Scala My attempt — the killer feature is that it doesn't require Internet connection! (I hope it's not too long :D ) Also, I did summon Chtulhu while preparing color database (because I parsed a subset of HTML with regex; the regex and the link to source are in comments) Edit: improved accuracy Example run: http://ideone.com/e3n0dG object Main { def main(args: Array[String]) { val color = extractBrightness(readLine().split("[, ]+").map(_.toInt)) val nearestColor = colors.minBy(t => distance(extractBrightness(parseColor(t._1)), color, weight))._2 println(s"Your color is$nearestColor")
}

def parseColor(s: String) = {
s.sliding(2, 2).map(Integer.parseInt(_, 16)).toVector
}

def distance(c1: Seq[Double], c2: Seq[Double], weight: Seq[Double]) = {
c1.zip(c2).map(t => ((x: Double) => x * x)(t._1 - t._2)).zip(weight).map(t => t._1 * t._2).sum
}

val weight = Vector(0.01, 1.0, 0.8)

def extractBrightness(c: Seq[Int]) = {
val Seq(r, g, b) = c
val brightness = c.sum.toDouble / 3
val rOffset = r - brightness
val bOffset = b - brightness
Seq(brightness, rOffset, bOffset)
}

// colors are extracted by using this regex: <li>[\s\S]*?<a href="/......">([\w ]+)</a>[\s\S]*?<a href="/......">#(......)</a>[\s\S]*?</li>
val colors = Vector(
"5d8aa8" -> "Air Force blue",
"f0f8ff" -> "Alice blue",
"e32636" -> "Alizarin crimson",
"efdecd" -> "Almond",
"e52b50" -> "Amaranth",
"ffbf00" -> "Amber",
"ff033e" -> "American rose",
"9966cc" -> "Amethyst",
"a4c639" -> "Android Green",
"cd9575" -> "Antique brass",
"915c83" -> "Antique fuchsia",
"faebd7" -> "Antique white",
"008000" -> "Ao",
"8db600" -> "Apple green",
"fbceb1" -> "Apricot",
"00ffff" -> "Aqua",
"7fffd4" -> "Aquamarine",
"4b5320" -> "Army green",
"e9d66b" -> "Arylide yellow",
"b2beb5" -> "Ash grey",
"87a96b" -> "Asparagus",
"ff9966" -> "Atomic tangerine",
"a52a2a" -> "Auburn",
"fdee00" -> "Aureolin",
"6e7f80" -> "AuroMetalSaurus",
"ff2052" -> "Awesome",
"007fff" -> "Azure",
"89cff0" -> "Baby blue",
"a1caf1" -> "Baby blue eyes",
"f4c2c2" -> "Baby pink",
"21abcd" -> "Ball Blue",
"fae7b5" -> "Banana Mania",
"ffe135" -> "Banana yellow",
"848482" -> "Battleship grey",
"98777b" -> "Bazaar",
"bcd4e6" -> "Beau blue",
"9f8170" -> "Beaver",
"f5f5dc" -> "Beige",
"ffe4c4" -> "Bisque",
"3d2b1f" -> "Bistre",
"fe6f5e" -> "Bittersweet",
"000000" -> "Black",
"ffebcd" -> "Blanched Almond",
"318ce7" -> "Bleu de France",
"ace5ee" -> "Blizzard Blue",
"faf0be" -> "Blond",
"0000ff" -> "Blue",
"a2a2d0" -> "Blue Bell",
"6699cc" -> "Blue Gray",
"0d98ba" -> "Blue green",
"8a2be2" -> "Blue purple",
"8a2be2" -> "Blue violet",
"de5d83" -> "Blush",
"79443b" -> "Bole",
"0095b6" -> "Bondi blue",
"e3dac9" -> "Bone",
"cc0000" -> "Boston University Red",
"006a4e" -> "Bottle green",
"873260" -> "Boysenberry",
"0070ff" -> "Brandeis blue",
"b5a642" -> "Brass",
"cb4154" -> "Brick red",
"1dacd6" -> "Bright cerulean",
"66ff00" -> "Bright green",
"bf94e4" -> "Bright lavender",
"c32148" -> "Bright maroon",
"ff007f" -> "Bright pink",
"08e8de" -> "Bright turquoise",
"d19fe8" -> "Bright ube",
"f4bbff" -> "Brilliant lavender",
"ff55a3" -> "Brilliant rose",
"fb607f" -> "Brink pink",
"004225" -> "British racing green",
"cd7f32" -> "Bronze",
"a52a2a" -> "Brown",
"ffc1cc" -> "Bubble gum",
"e7feff" -> "Bubbles",
"f0dc82" -> "Buff",
"480607" -> "Bulgarian rose",
"800020" -> "Burgundy",
"deb887" -> "Burlywood",
"cc5500" -> "Burnt orange",
"e97451" -> "Burnt sienna",
"8a3324" -> "Burnt umber",
"bd33a4" -> "Byzantine",
"702963" -> "Byzantium",
"007aa5" -> "CG Blue",
"e03c31" -> "CG Red",
"a67b5b" -> "Café au lait",
"4b3621" -> "Café noir",
"1e4d2b" -> "Cal Poly Pomona green",
"c19a6b" -> "Camel",
"78866b" -> "Camouflage green",
"ffff99" -> "Canary",
"ffef00" -> "Canary yellow",
"ff0800" -> "Candy apple red",
"e4717a" -> "Candy pink",
"00bfff" -> "Capri",
"592720" -> "Caput mortuum",
"c41e3a" -> "Cardinal",
"00cc99" -> "Caribbean green",
"ff0040" -> "Carmine",
"eb4c42" -> "Carmine pink",
"ff0038" -> "Carmine red",
"ffa6c9" -> "Carnation pink",
"b31b1b" -> "Carnelian",
"ed9121" -> "Carrot orange",
"b2ffff" -> "Celeste",
"4997d0" -> "Celestial blue",
"de3163" -> "Cerise",
"ec3b83" -> "Cerise pink",
"007ba7" -> "Cerulean",
"2a52be" -> "Cerulean blue",
"a0785a" -> "Chamoisee",
"36454f" -> "Charcoal",
"7fff00" -> "Chartreuse",
"de3163" -> "Cherry",
"ffb7c5" -> "Cherry blossom pink",
"cd5c5c" -> "Chestnut",
"d2691e" -> "Chocolate",
"ffa700" -> "Chrome yellow",
"98817b" -> "Cinereous",
"e34234" -> "Cinnabar",
"d2691e" -> "Cinnamon",
"e4d00a" -> "Citrine",
"fbcce7" -> "Classic rose",
"0047ab" -> "Cobalt",
"d2691e" -> "Cocoa brown",
"6f4e37" -> "Coffee",
"9bddff" -> "Columbia blue",
"002e63" -> "Cool black",
"8c92ac" -> "Cool grey",
"b87333" -> "Copper",
"996666" -> "Copper rose",
"ff3800" -> "Coquelicot",
"ff7f50" -> "Coral",
"f88379" -> "Coral pink",
"ff4040" -> "Coral red",
"893f45" -> "Cordovan",
"fbec5d" -> "Corn",
"b31b1b" -> "Cornell Red",
"9aceeb" -> "Cornflower",
"6495ed" -> "Cornflower blue",
"fff8dc" -> "Cornsilk",
"fff8e7" -> "Cosmic latte",
"ffbcd9" -> "Cotton candy",
"fffdd0" -> "Cream",
"dc143c" -> "Crimson",
"990000" -> "Crimson Red",
"be0032" -> "Crimson glory",
"00ffff" -> "Cyan",
"ffff31" -> "Daffodil",
"f0e130" -> "Dandelion",
"00008b" -> "Dark blue",
"654321" -> "Dark brown",
"5d3954" -> "Dark byzantium",
"a40000" -> "Dark candy apple red",
"08457e" -> "Dark cerulean",
"986960" -> "Dark chestnut",
"cd5b45" -> "Dark coral",
"008b8b" -> "Dark cyan",
"536878" -> "Dark electric blue",
"b8860b" -> "Dark goldenrod",
"a9a9a9" -> "Dark gray",
"013220" -> "Dark green",
"1a2421" -> "Dark jungle green",
"bdb76b" -> "Dark khaki",
"483c32" -> "Dark lava",
"734f96" -> "Dark lavender",
"8b008b" -> "Dark magenta",
"003366" -> "Dark midnight blue",
"556b2f" -> "Dark olive green",
"ff8c00" -> "Dark orange",
"9932cc" -> "Dark orchid",
"779ecb" -> "Dark pastel blue",
"03c03c" -> "Dark pastel green",
"966fd6" -> "Dark pastel purple",
"c23b22" -> "Dark pastel red",
"e75480" -> "Dark pink",
"003399" -> "Dark powder blue",
"872657" -> "Dark raspberry",
"8b0000" -> "Dark red",
"e9967a" -> "Dark salmon",
"560319" -> "Dark scarlet",
"8fbc8f" -> "Dark sea green",
"3c1414" -> "Dark sienna",
"483d8b" -> "Dark slate blue",
"2f4f4f" -> "Dark slate gray",
"177245" -> "Dark spring green",
"918151" -> "Dark tan",
"ffa812" -> "Dark tangerine",
"483c32" -> "Dark taupe",
"cc4e5c" -> "Dark terra cotta",
"00ced1" -> "Dark turquoise",
"9400d3" -> "Dark violet",
"00693e" -> "Dartmouth green",
"555555" -> "Davy grey",
"d70a53" -> "Debian red",
"a9203e" -> "Deep carmine",
"ef3038" -> "Deep carmine pink",
"e9692c" -> "Deep carrot orange",
"da3287" -> "Deep cerise",
"b94e48" -> "Deep chestnut",
"704241" -> "Deep coffee",
"c154c1" -> "Deep fuchsia",
"004b49" -> "Deep jungle green",
"9955bb" -> "Deep lilac",
"cc00cc" -> "Deep magenta",
"ffcba4" -> "Deep peach",
"ff1493" -> "Deep pink",
"ff9933" -> "Deep saffron",
"00bfff" -> "Deep sky blue",
"1560bd" -> "Denim",
"c19a6b" -> "Desert",
"edc9af" -> "Desert sand",
"696969" -> "Dim gray",
"1e90ff" -> "Dodger blue",
"d71868" -> "Dogwood rose",
"85bb65" -> "Dollar bill",
"967117" -> "Drab",
"00009c" -> "Duke blue",
"e1a95f" -> "Earth yellow",
"c2b280" -> "Ecru",
"614051" -> "Eggplant",
"1034a6" -> "Egyptian blue",
"7df9ff" -> "Electric blue",
"ff003f" -> "Electric crimson",
"00ffff" -> "Electric cyan",
"00ff00" -> "Electric green",
"6f00ff" -> "Electric indigo",
"f4bbff" -> "Electric lavender",
"ccff00" -> "Electric lime",
"bf00ff" -> "Electric purple",
"3f00ff" -> "Electric ultramarine",
"8f00ff" -> "Electric violet",
"ffff00" -> "Electric yellow",
"50c878" -> "Emerald",
"96c8a2" -> "Eton blue",
"c19a6b" -> "Fallow",
"801818" -> "Falu red",
"ff00ff" -> "Famous",
"b53389" -> "Fandango",
"f400a1" -> "Fashion fuchsia",
"e5aa70" -> "Fawn",
"4d5d53" -> "Feldgrau",
"71bc78" -> "Fern",
"4f7942" -> "Fern green",
"ff2800" -> "Ferrari Red",
"6c541e" -> "Field drab",
"ce2029" -> "Fire engine red",
"b22222" -> "Firebrick",
"e25822" -> "Flame",
"fc8eac" -> "Flamingo pink",
"f7e98e" -> "Flavescent",
"eedc82" -> "Flax",
"fffaf0" -> "Floral white",
"ffbf00" -> "Fluorescent orange",
"ff1493" -> "Fluorescent pink",
"ccff00" -> "Fluorescent yellow",
"ff004f" -> "Folly",
"228b22" -> "Forest green",
"a67b5b" -> "French beige",
"0072bb" -> "French blue",
"86608e" -> "French lilac",
"f64a8a" -> "French rose",
"ff00ff" -> "Fuchsia",
"ff77ff" -> "Fuchsia pink",
"e48400" -> "Fulvous",
"cc6666" -> "Fuzzy Wuzzy",
"dcdcdc" -> "Gainsboro",
"e49b0f" -> "Gamboge",
"f8f8ff" -> "Ghost white",
"b06500" -> "Ginger",
"6082b6" -> "Glaucous",
"e6e8fa" -> "Glitter",
"ffd700" -> "Gold",
"996515" -> "Golden brown",
"fcc200" -> "Golden poppy",
"ffdf00" -> "Golden yellow",
"daa520" -> "Goldenrod",
"a8e4a0" -> "Granny Smith Apple",
"808080" -> "Gray",
"465945" -> "Gray asparagus",
"00ff00" -> "Green",
"1164b4" -> "Green Blue",
"a99a86" -> "Grullo",
"00ff7f" -> "Guppie green",
"663854" -> "Halayà úbe",
"446ccf" -> "Han blue",
"5218fa" -> "Han purple",
"e9d66b" -> "Hansa yellow",
"3fff00" -> "Harlequin",
"c90016" -> "Harvard crimson",
"da9100" -> "Harvest Gold",
"808000" -> "Heart Gold",
"df73ff" -> "Heliotrope",
"f400a1" -> "Hollywood cerise",
"f0fff0" -> "Honeydew",
"49796b" -> "Hooker green",
"ff1dce" -> "Hot magenta",
"ff69b4" -> "Hot pink",
"355e3b" -> "Hunter green",
"fcf75e" -> "Icterine",
"b2ec5d" -> "Inchworm",
"138808" -> "India green",
"cd5c5c" -> "Indian red",
"e3a857" -> "Indian yellow",
"4b0082" -> "Indigo",
"002fa7" -> "International Klein Blue",
"ff4f00" -> "International orange",
"5a4fcf" -> "Iris",
"f4f0ec" -> "Isabelline",
"009000" -> "Islamic green",
"fffff0" -> "Ivory",
"f8de7e" -> "Jasmine",
"d73b3e" -> "Jasper",
"a50b5e" -> "Jazzberry jam",
"bdda57" -> "June bud",
"29ab87" -> "Jungle green",
"e8000d" -> "KU Crimson",
"4cbb17" -> "Kelly green",
"c3b091" -> "Khaki",
"087830" -> "La Salle Green",
"26619c" -> "Lapis lazuli",
"fefe22" -> "Laser Lemon",
"a9ba9d" -> "Laurel green",
"cf1020" -> "Lava",
"e6e6fa" -> "Lavender",
"ccccff" -> "Lavender blue",
"fff0f5" -> "Lavender blush",
"c4c3d0" -> "Lavender gray",
"9457eb" -> "Lavender indigo",
"ee82ee" -> "Lavender magenta",
"e6e6fa" -> "Lavender mist",
"fbaed2" -> "Lavender pink",
"967bb6" -> "Lavender purple",
"fba0e3" -> "Lavender rose",
"7cfc00" -> "Lawn green",
"fff700" -> "Lemon",
"fff44f" -> "Lemon Yellow",
"fffacd" -> "Lemon chiffon",
"bfff00" -> "Lemon lime",
"f56991" -> "Light Crimson",
"e68fac" -> "Light Thulian pink",
"fdd5b1" -> "Light apricot",
"b5651d" -> "Light brown",
"e66771" -> "Light carmine pink",
"f08080" -> "Light coral",
"93ccea" -> "Light cornflower blue",
"e0ffff" -> "Light cyan",
"f984ef" -> "Light fuchsia pink",
"d3d3d3" -> "Light gray",
"90ee90" -> "Light green",
"f0e68c" -> "Light khaki",
"b19cd9" -> "Light pastel purple",
"ffb6c1" -> "Light pink",
"ffa07a" -> "Light salmon",
"ff9999" -> "Light salmon pink",
"20b2aa" -> "Light sea green",
"87cefa" -> "Light sky blue",
"778899" -> "Light slate gray",
"b38b6d" -> "Light taupe",
"ffffed" -> "Light yellow",
"c8a2c8" -> "Lilac",
"bfff00" -> "Lime",
"32cd32" -> "Lime green",
"195905" -> "Lincoln green",
"faf0e6" -> "Linen",
"c19a6b" -> "Lion",
"534b4f" -> "Liver",
"e62020" -> "Lust",
"18453b" -> "MSU Green",
"ffbd88" -> "Macaroni and Cheese",
"ff00ff" -> "Magenta",
"aaf0d1" -> "Magic mint",
"f8f4ff" -> "Magnolia",
"c04000" -> "Mahogany",
"fbec5d" -> "Maize",
"6050dc" -> "Majorelle Blue",
"0bda51" -> "Malachite",
"979aaa" -> "Manatee",
"ff8243" -> "Mango Tango",
"74c365" -> "Mantis",
"800000" -> "Maroon",
"e0b0ff" -> "Mauve",
"915f6d" -> "Mauve taupe",
"ef98aa" -> "Mauvelous",
"73c2fb" -> "Maya blue",
"e5b73b" -> "Meat brown",
"0067a5" -> "Medium Persian blue",
"66ddaa" -> "Medium aquamarine",
"0000cd" -> "Medium blue",
"e2062c" -> "Medium candy apple red",
"af4035" -> "Medium carmine",
"f3e5ab" -> "Medium champagne",
"035096" -> "Medium electric blue",
"1c352d" -> "Medium jungle green",
"dda0dd" -> "Medium lavender magenta",
"ba55d3" -> "Medium orchid",
"9370db" -> "Medium purple",
"bb3385" -> "Medium red violet",
"3cb371" -> "Medium sea green",
"7b68ee" -> "Medium slate blue",
"c9dc87" -> "Medium spring bud",
"00fa9a" -> "Medium spring green",
"674c47" -> "Medium taupe",
"0054b4" -> "Medium teal blue",
"48d1cc" -> "Medium turquoise",
"c71585" -> "Medium violet red",
"fdbcb4" -> "Melon",
"191970" -> "Midnight blue",
"004953" -> "Midnight green",
"3eb489" -> "Mint",
"f5fffa" -> "Mint cream",
"98ff98" -> "Mint green",
"ffe4e1" -> "Misty rose",
"faebd7" -> "Moccasin",
"967117" -> "Mode beige",
"73a9c2" -> "Moonstone blue",
"ae0c00" -> "Mordant red 19",
"997a8d" -> "Mountbatten pink",
"c54b8c" -> "Mulberry",
"f2f3f4" -> "Munsell",
"ffdb58" -> "Mustard",
"21421e" -> "Myrtle",
"2a8000" -> "Napier green",
"000080" -> "Navy blue",
"ffa343" -> "Neon Carrot",
"fe59c2" -> "Neon fuchsia",
"39ff14" -> "Neon green",
"059033" -> "North Texas Green",
"0077be" -> "Ocean Boat Blue",
"cc7722" -> "Ochre",
"008000" -> "Office green",
"cfb53b" -> "Old gold",
"fdf5e6" -> "Old lace",
"796878" -> "Old lavender",
"673147" -> "Old mauve",
"c08081" -> "Old rose",
"808000" -> "Olive",
"6b8e23" -> "Olive Drab",
"bab86c" -> "Olive Green",
"9ab973" -> "Olivine",
"0f0f0f" -> "Onyx",
"b784a7" -> "Opera mauve",
"ffa500" -> "Orange",
"f8d568" -> "Orange Yellow",
"ff9f00" -> "Orange peel",
"ff4500" -> "Orange red",
"da70d6" -> "Orchid",
"654321" -> "Otter brown",
"414a4c" -> "Outer Space",
"ff6e4a" -> "Outrageous Orange",
"002147" -> "Oxford Blue",
"1ca9c9" -> "Pacific Blue",
"006600" -> "Pakistan green",
"273be2" -> "Palatinate blue",
"682860" -> "Palatinate purple",
"bcd4e6" -> "Pale aqua",
"afeeee" -> "Pale blue",
"987654" -> "Pale brown",
"af4035" -> "Pale carmine",
"9bc4e2" -> "Pale cerulean",
"da8a67" -> "Pale copper",
"abcdef" -> "Pale cornflower blue",
"e6be8a" -> "Pale gold",
"eee8aa" -> "Pale goldenrod",
"98fb98" -> "Pale green",
"dcd0ff" -> "Pale lavender",
"f984e5" -> "Pale magenta",
"dda0dd" -> "Pale plum",
"db7093" -> "Pale red violet",
"96ded1" -> "Pale robin egg blue",
"c9c0bb" -> "Pale silver",
"ecebbd" -> "Pale spring bud",
"bc987e" -> "Pale taupe",
"db7093" -> "Pale violet red",
"78184a" -> "Pansy purple",
"ffefd5" -> "Papaya whip",
"50c878" -> "Paris Green",
"aec6cf" -> "Pastel blue",
"836953" -> "Pastel brown",
"cfcfc4" -> "Pastel gray",
"77dd77" -> "Pastel green",
"f49ac2" -> "Pastel magenta",
"ffb347" -> "Pastel orange",
"ffd1dc" -> "Pastel pink",
"b39eb5" -> "Pastel purple",
"ff6961" -> "Pastel red",
"cb99c9" -> "Pastel violet",
"fdfd96" -> "Pastel yellow",
"800080" -> "Patriarch",
"536878" -> "Payne grey",
"ffe5b4" -> "Peach",
"ffdab9" -> "Peach puff",
"d1e231" -> "Pear",
"eae0c8" -> "Pearl",
"88d8c0" -> "Pearl Aqua",
"e6e200" -> "Peridot",
"ccccff" -> "Periwinkle",
"1c39bb" -> "Persian blue",
"32127a" -> "Persian indigo",
"d99058" -> "Persian orange",
"f77fbe" -> "Persian pink",
"701c1c" -> "Persian plum",
"cc3333" -> "Persian red",
"fe28a2" -> "Persian rose",
"df00ff" -> "Phlox",
"000f89" -> "Phthalo blue",
"123524" -> "Phthalo green",
"fddde6" -> "Piggy pink",
"01796f" -> "Pine green",
"ffc0cb" -> "Pink",
"fc74fd" -> "Pink Flamingo",
"f78fa7" -> "Pink Sherbet",
"e7accf" -> "Pink pearl",
"93c572" -> "Pistachio",
"e5e4e2" -> "Platinum",
"dda0dd" -> "Plum",
"ff5a36" -> "Portland Orange",
"b0e0e6" -> "Powder blue",
"ff8f00" -> "Princeton orange",
"003153" -> "Prussian blue",
"df00ff" -> "Psychedelic purple",
"cc8899" -> "Puce",
"ff7518" -> "Pumpkin",
"800080" -> "Purple",
"69359c" -> "Purple Heart",
"9678b6" -> "Purple mountain majesty",
"fe4eda" -> "Purple pizzazz",
"50404d" -> "Purple taupe",
"5d8aa8" -> "Rackley",
"e30b5d" -> "Raspberry",
"915f6d" -> "Raspberry glace",
"e25098" -> "Raspberry pink",
"b3446c" -> "Raspberry rose",
"d68a59" -> "Raw Sienna",
"ff33cc" -> "Razzle dazzle rose",
"e3256b" -> "Razzmatazz",
"ff0000" -> "Red",
"ff5349" -> "Red Orange",
"a52a2a" -> "Red brown",
"c71585" -> "Red violet",
"004040" -> "Rich black",
"d70040" -> "Rich carmine",
"0892d0" -> "Rich electric blue",
"b666d2" -> "Rich lilac",
"b03060" -> "Rich maroon",
"414833" -> "Rifle green",
"ff007f" -> "Rose",
"f9429e" -> "Rose bonbon",
"674846" -> "Rose ebony",
"b76e79" -> "Rose gold",
"ff66cc" -> "Rose pink",
"aa98a9" -> "Rose quartz",
"905d5d" -> "Rose taupe",
"ab4e52" -> "Rose vale",
"65000b" -> "Rosewood",
"d40000" -> "Rosso corsa",
"bc8f8f" -> "Rosy brown",
"0038a8" -> "Royal azure",
"4169e1" -> "Royal blue",
"ca2c92" -> "Royal fuchsia",
"7851a9" -> "Royal purple",
"e0115f" -> "Ruby",
"ff0028" -> "Ruddy",
"bb6528" -> "Ruddy brown",
"e18e96" -> "Ruddy pink",
"a81c07" -> "Rufous",
"80461b" -> "Russet",
"b7410e" -> "Rust",
"00563f" -> "Sacramento State green",
"ff6700" -> "Safety orange",
"f4c430" -> "Saffron",
"23297a" -> "Saint Patrick Blue",
"ff8c69" -> "Salmon",
"ff91a4" -> "Salmon pink",
"c2b280" -> "Sand",
"967117" -> "Sand dune",
"ecd540" -> "Sandstorm",
"f4a460" -> "Sandy brown",
"967117" -> "Sandy taupe",
"507d2a" -> "Sap green",
"0f52ba" -> "Sapphire",
"cba135" -> "Satin sheen gold",
"ff2400" -> "Scarlet",
"ffd800" -> "School bus yellow",
"76ff7a" -> "Screamin Green",
"006994" -> "Sea blue",
"2e8b57" -> "Sea green",
"321414" -> "Seal brown",
"fff5ee" -> "Seashell",
"ffba00" -> "Selective yellow",
"704214" -> "Sepia",
"45cea2" -> "Shamrock",
"009e60" -> "Shamrock green",
"fc0fc0" -> "Shocking pink",
"882d17" -> "Sienna",
"c0c0c0" -> "Silver",
"cb410b" -> "Sinopia",
"007474" -> "Skobeloff",
"87ceeb" -> "Sky blue",
"cf71af" -> "Sky magenta",
"6a5acd" -> "Slate blue",
"708090" -> "Slate gray",
"003399" -> "Smalt",
"933d41" -> "Smokey topaz",
"100c08" -> "Smoky black",
"fffafa" -> "Snow",
"0fc0fc" -> "Spiro Disco Ball",
"a7fc00" -> "Spring bud",
"00ff7f" -> "Spring green",
"4682b4" -> "Steel blue",
"fada5e" -> "Stil de grain yellow",
"990000" -> "Stizza",
"008080" -> "Stormcloud",
"e4d96f" -> "Straw",
"ffcc33" -> "Sunglow",
"fd5e53" -> "Sunset Orange",
"d2b48c" -> "Tan",
"f94d00" -> "Tangelo",
"f28500" -> "Tangerine",
"ffcc00" -> "Tangerine yellow",
"483c32" -> "Taupe",
"8b8589" -> "Taupe gray",
"cd5700" -> "Tawny",
"d0f0c0" -> "Tea green",
"f4c2c2" -> "Tea rose",
"008080" -> "Teal",
"367588" -> "Teal blue",
"006d5b" -> "Teal green",
"e2725b" -> "Terra cotta",
"d8bfd8" -> "Thistle",
"de6fa1" -> "Thulian pink",
"fc89ac" -> "Tickle Me Pink",
"0abab5" -> "Tiffany Blue",
"e08d3c" -> "Tiger eye",
"dbd7d2" -> "Timberwolf",
"eee600" -> "Titanium yellow",
"ff6347" -> "Tomato",
"746cc0" -> "Toolbox",
"ffc87c" -> "Topaz",
"fd0e35" -> "Tractor red",
"808080" -> "Trolley Grey",
"00755e" -> "Tropical rain forest",
"0073cf" -> "True Blue",
"417dc1" -> "Tufts Blue",
"deaa88" -> "Tumbleweed",
"b57281" -> "Turkish rose",
"30d5c8" -> "Turquoise",
"00ffef" -> "Turquoise blue",
"a0d6b4" -> "Turquoise green",
"66424d" -> "Tuscan red",
"8a496b" -> "Twilight lavender",
"66023c" -> "Tyrian purple",
"0033aa" -> "UA blue",
"d9004c" -> "UA red",
"536895" -> "UCLA Blue",
"ffb300" -> "UCLA Gold",
"3cd070" -> "UFO Green",
"014421" -> "UP Forest green",
"7b1113" -> "UP Maroon",
"990000" -> "USC Cardinal",
"ffcc00" -> "USC Gold",
"8878c3" -> "Ube",
"ff6fff" -> "Ultra pink",
"120a8f" -> "Ultramarine",
"4166f5" -> "Ultramarine blue",
"635147" -> "Umber",
"5b92e5" -> "United Nations blue",
"b78727" -> "University of California Gold",
"ffff66" -> "Unmellow Yellow",
"ae2029" -> "Upsdell red",
"d3003f" -> "Utah Crimson",
"f3e5ab" -> "Vanilla",
"c5b358" -> "Vegas gold",
"c80815" -> "Venetian red",
"43b3ae" -> "Verdigris",
"e34234" -> "Vermilion",
"a020f0" -> "Veronica",
"ee82ee" -> "Violet",
"324ab2" -> "Violet Blue",
"f75394" -> "Violet Red",
"40826d" -> "Viridian",
"922724" -> "Vivid auburn",
"9f1d35" -> "Vivid burgundy",
"da1d81" -> "Vivid cerise",
"ffa089" -> "Vivid tangerine",
"9f00ff" -> "Vivid violet",
"004242" -> "Warm black",
"00ffff" -> "Waterspout",
"645452" -> "Wenge",
"f5deb3" -> "Wheat",
"ffffff" -> "White",
"f5f5f5" -> "White smoke",
"ff43a4" -> "Wild Strawberry",
"fc6c85" -> "Wild Watermelon",
"722f37" -> "Wine",
"c9a0dc" -> "Wisteria",
"0f4d92" -> "Yale Blue",
"ffff00" -> "Yellow",
"ffae42" -> "Yellow Orange",
"9acd32" -> "Yellow green",
"0014a8" -> "Zaffre",
"2c1608" -> "Zinnwaldite brown")
}


Well, since I had it laying around, here it is in Objective-C:

- (NSString*)colorNameFromColor:(NSColor*)chosenColor
{
NSColor*    calibratedColor = [chosenColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace];

CGFloat  hue;
CGFloat  saturation;
CGFloat  brightness;
[calibratedColor getHue:&hue
saturation:&saturation
brightness:&brightness
alpha:nil];

// I found that when the saturation was below 1% I couldn't tell
// the color from gray
if (saturation <= 0.01)
{
saturation = 0.0;
}

NSString*   colorName   = @"";

// If saturation is 0.0, then this is a grayscale color
if (saturation == 0.0)
{
if (brightness <= 0.2)
{
colorName = @"black";
}
else if (brightness > 0.95)
{
colorName = @"white";
}
else
{
colorName = @"gray";

if (brightness < 0.33)
{
colorName = [@"dark " stringByAppendingString:colorName];
}
else if (brightness > 0.66)
{
colorName = [@"light " stringByAppendingString:colorName];
}
}
}
else
{
if ((hue <= 15.0 / 360.0) || (hue > 330.0 / 360.0))
{
colorName = @"red";
}
else if (hue < 45.0 / 360.0)
{
colorName = @"orange";
}
else if (hue < 70.0 / 360.0)
{
colorName = @"yellow";
}
else if (hue < 150.0 / 360.0)
{
colorName = @"green";
}
else if (hue < 190.0 / 360.0)
{
colorName = @"cyan";
}
else if (hue < 250.0 / 360.0)
{
colorName = @"blue";
}
else if (hue < 290.0 / 360.0)
{
colorName = @"purple";
}
else
{
colorName = @"magenta";
}

if (brightness < 0.5)
{
colorName = [@"dark " stringByAppendingString:colorName];
}
else if (brightness > 0.8)
{
colorName = [@"bright " stringByAppendingString:colorName];
}
}

return colorName;
}


# Pharo Smalltalk

Put this in a Pharo Workspace and print it.

| color colorNames nearestColorName |
color := Color r: 255 g: 0 b: 0 range: 255.
colorNames := Color registeredColorNames copyWithout: #transparent.
nearestColorName := colorNames detectMin: [ :each | (Color named: each) diff: color].


The results are of mixed quality. All darker colors are named as gray, dark gray or very dark gray. Probably Color's diff: method could be better.

For a very simple visualization do:

((Morph newBounds: (0@0 extent: 200@200 ) color: color) addMorph: nearestColorName asMorph) openInWorld.


SAS macro, based on the (rather quaint) SAS V8 colour names as documented here: https://v8doc.sas.com/sashtml/gref/zgscheme.htm#zrs-hues

Sample input:

%rgbname(100,100,50);


Sample output:

EDIT: Updated with much more compact version.

%macro rgbname(r,g,b);
data _null_;
infile "C:\temp\colours.csv" dlm = ',' lrecl=32767 missover firstobs = 2 end = eof;
format name description $32. rgb hls$8.;
input name description rgb hls;
R = input(substr(rgb,3,2),hex.);
G = input(substr(rgb,5,2),hex.);
B = input(substr(rgb,7,2),hex.);
retain min_distance outdesc;
distance = (r-&r)**2 + (g-&g)**2 + (b-&b)**2;
min_distance = min(distance, min_distance);
if distance = min_distance then outdesc = description;
if eof then call symput("COLOUR_NAME", outdesc);
run;
dm log "postmessage ""You meant &COLOUR_NAME""" continue;
%mend rgbname;


XKCD version - a blatant ripoff of the top answer, but it's a nice little demo of the filename URL engine, and doesn't require manual preparation of a CSV:

%macro rgb_xkcd_name(r,g,b);
filename xkcd URL "http://bpaste.net/raw/402634/" debug;
data _null_;
infile xkcd dlm = ',][' lrecl=32767 missover end = eof;
format r g b 3. name $32.; input r g b name; retain min_distance outname; distance = (r-&r)**2 + (g-&g)**2 + (b-&b)**2; min_distance = min(distance, min_distance); if distance = min_distance then outname = name; if eof then do; call symput("COLOUR_NAME", outname); put _all_; end; run; dm log "postmessage ""XKCD thinks you meant &COLOUR_NAME""" continue; %mend rgb_xkcd_name;  A C# Solution with Linq and KnownColors from .NET string GetColorName(int r, int g, int b){ return Enum.GetValues(typeof(KnownColor)) .OfType<KnownColor>() .Select(x => Color.FromKnownColor(x)) .Select(x => new {Col = x, Offset = Math.Abs(r - x.R) + Math.Abs(g - x.G) + Math.Abs(b - x.B)}) .OrderBy(x => x.Offset) .Select(x => x.Col) .First().Name; }  ## Tcl This references X11 colors from rgb.txt. On my Ubuntu it's in /etc/X11/rgb.txt though I know on some systems it's in /usr/lib/X11/rgb.txt. Google rgb.txt and download it if you don't run X11. #! /usr/bin/env tclsh set f [open /etc/X11/rgb.txt] set raw [read$f]
close $f set COLORS {} foreach line [split$raw \n] {
regexp {(\d+)\s+(\d+)\s+(\d+)\s+(.+)} $line -> r g b name if {[info exists name] &&$name != ""} {
lappend COLORS [format %02x%02x%02x $r$g $b]$name
}
}

proc color_distance {a b} {
set a [scan $a %2x%2x%2x] set b [scan$b %2x%2x%2x]
set dist 0

foreach x $a y$b {
set dist [expr {$dist + (abs($x-$y)**2)}] } return$dist
}

proc identify {given_color} {
global COLORS
set d 0xffffff
set c ""

foreach {test_color name} $COLORS { set dist [color_distance$given_color $test_color] if {$dist < $d} { set d$dist
set n $name set c$test_color
}
}

return "$n ($c)"
}

puts [identify \$argv]


Pass color code as command line argument.

# Python 2.6

## With UI:

### Obfuscated (8,397 bytes):

exec("import re;import base64");exec((lambda p,y:(lambda o,b,f:re.sub(o,b,f))(r"([0-9a-f]+)",lambda m:p(m,y),base64.b64decode("MTZkIGI2IGNlICoKMjYgPSB7JyNkOSc6ICc5MScsICcjMTA0JzogJzE3MicsICcjOGInOiAnYTYnLCAnIzEyYyc6ICdhNScsICcjZjcnOiAnMTU4JywgJyNmYic6ICc2OCcsICcjMTE2JzogJzQwJywgJyMxMGQnOiAnNjEnLCAnIzEyYSc6ICc1ZCcsICcjZjgnOiAnOWQnLCAnIzExNyc6ICc3MycsICcjMTQwJzogJzdiJywgJyMxM2MnOiAnM2YnLCAnI2RkJzogJzQxJywgJyNmMyc6ICdmMCcsICcjMTE1JzogJzE3MScsICcjMTM0JzogJzc1JywgJyMxMzknOiAnMTU2JywgJyMxM2QnOiAnNDknLCAnI2QyJzogJzZmJywgJyMxMjknOiAnN2QnLCAnIzE0Mic6ICdjMCcsICcjZmEnOiAnMzcnLCAnI2VlJzogJzkzJywgJyNlZic6ICc4NScsICcjZjEnOiAnMTY2JywgJyNmZSc6ICczYycsICcjZjknOiAnYjEnLCAnIzEyZCc6ICcxMzEnLCAnI2M5JzogJzVhJywgJyMxNTAnOiAnNzYnLCAnI2U5JzogJzMxJywgJyNkMSc6ICdiMicsICcjMTBjJzogJzgzJywgJyMxMzUnOiAnMTU0JywgJyNiOCc6ICc2MycsICcjYmQnOiAnNzAnLCAnI2ZjJzogJzE3MCcsICcjYzMnOiAnOTknLCAnI2JiJzogJzE2OScsICcjMTFlJzogJzdmJywgJyNmNSc6ICc2MicsICcjMTFmJzogJzJhJywgJyNkNCc6ICc3NycsICcjMTAyJzogJ2YnLCAnIzEyMic6ICc0YicsICcjMTAzJzogJ2E3JywgJyNlMSc6ICcxMzAnLCAnIzE0ZCc6ICc1OScsICcjZjQnOiAnNzgnLCAnI2U4JzogJzI0JywgJyNjMic6ICdhYScsICcjMTA3JzogJzY0JywgJyNlYic6ICc4ZicsICcjMTNiJzogJzcyJywgJyNiOSc6ICdhZicsICcjMTJiJzogJzM5JywgJyNjNCc6ICdhYicsICcjZGMnOiAnMTVmJywgJyMxNGYnOiAnYTQnLCAnI2RlJzogJzE1YicsICcjMTM2JzogJzE1NycsICcjZTcnOiAnZWMnLCAnIzExMSc6ICcxNmMnLCAnIzE1MSc6ICc2NicsICcjMTJmJzogJzExYycsICcjZTUnOiAnNWMnLCAnIzExYic6ICcxNmInLCAnIzEyNic6ICcxNTUnLCAnI2U2JzogJzJlJywgJyNiZic6ICc4NCcsICcjZTInOiAnMTdmJywgJyMxMzInOiAnM2InLCAnI2ZmJzogJzFiJywgJyNiYyc6ICcxM2EnLCAnIzE0NCc6ICc0YycsICcjYzUnOiAnMTY4JywgJyNlNCc6ICc2YycsICcjMTE4JzogJzE3NScsICcjY2MnOiAnMTVkJywgJyMxMGYnOiAnNWInLCAnIzEwOSc6ICcxNjcnLCAnIzEyZSc6ICc5NScsICcjMTBlJzogJzk0JywgJyNlYSc6ICczMicsICcjMTRhJzogJzM1JywgJyMxMTInOiAnMTQxJywgJyNiNyc6ICc4NycsICcjMTEzJzogJ2EzJywgJyNkNic6ICc4ZScsICcjZTMnOiAnOWMnLCAnI2RhJzogJzZlJywgJyNkNyc6ICczOCcsICcjYmUnOiAnNTAnLCAnIzE0Yic6ICc5NycsICcjMTIwJzogJzE1ZScsICcjMTUzJzogJ2FlJywgJyMxMTknOiAnNGUnLCAnIzEwMCc6ICdiMCcsICcjMTUyJzogJzdhJywgJyMxMDYnOiAnMTQ4JywgJyNkOCc6ICc0MycsICcjMTI3JzogJzM2JywgJyNkYic6ICc1NScsICcjMTM4JzogJzQ1JywgJyNjNic6ICcxNmEnLCAnI2VkJzogJzE2NCcsICcjMTI4JzogJzhkJywgJyMxMWQnOiAnN2MnLCAnI2Q1JzogJzE3MycsICcjY2EnOiAnODknLCAnI2NmJzogJ2FjJywgJyMxNGUnOiAnODInLCAnIzEwYSc6ICc0OCcsICcjMTQ3JzogJzVlJywgJyMxMzMnOiAnM2QnLCAnIzEwOCc6ICc4YScsICcjYmEnOiAnOWUnLCAnIzEyMyc6ICcxMjUnLCAnI2QzJzogJzk4JywgJyNmNic6ICc3OScsICcjY2QnOiAnNmInLCAnIzEzNyc6ICc2MCcsICcjMTNlJzogJ2QwJywgJyMxM2YnOiAnMzMnLCAnIzExNCc6ICdhMicsICcjMTBiJzogJzVmJywgJyNjYic6ICc2OScsICcjMTQzJzogJzI1JywgJyMxMjQnOiAnOTInLCAnIzExYSc6ICc5YScsICcjZGYnOiAnM2UnLCAnI2M4JzogJ2I1JywgJyNjMSc6ICc0MicsICcjZjInOiAnNjcnLCAnIzgwJzogJzE3NCcsICcjZmQnOiAnYzcnLCAnIzE0NSc6ICc5MCd9Cgo1MiAyMSgxMyk6CgkxMyA9IDEzLjE0NignIycpCgk5ZiA9IDE3OSgxMykKCTExIDE2MSg1NCgxM1sxNzg6MTc4KzlmLzNdLCAxNikgZTAgMTc4IDRmIDIyKDAsIDlmLCA5Zi8zKSkKCjE2MiAxYyg2YSk6CgkKCTUyIDJiKDU2LCA0ZCk6CgkJNmEuMmIoNTYsIDRkKQoJCTU2LjY1KCkKCQk1Ni5hOSgpCgkKCTUyIGE5KDU2KToKCQk1Ni5iID0gMTg4KDU2LCA0NCA9ICIxNjAgNGYgYSAxMTAgMTMuIikKCQk1Ni5iLjY1KDE4MiA9IDEsIDE3YyA9IDAsIDE4NyA9IDMpCgkJCgkJNTYuMmMgPSAxODgoNTYsIDQ0ID0gIjE3YiIpCgkJNTYuMmMuNjUoMTgyID0gMiwgMTdjID0gMCwgMTkgPSA1LCAxOCA9IDUpCgkJNTYuMWEgPSAzMCg1NikKCQk1Ni4xYS42NSgxODIgPSAzLCAxN2MgPSAwLCAxOSA9IDUsIDE4ID0gNSkKCQkKCQk1Ni40YSA9IDE4OCg1NiwgNDQgPSAiMTVjIikKCQk1Ni40YS42NSgxODIgPSAyLCAxN2MgPSAxLCAxOSA9IDUsIDE4ID0gNSkKCQk1Ni4xMCA9IDMwKDU2KQoJCTU2LjEwLjY1KDE4MiA9IDMsIDE3YyA9IDEsIDE5ID0gNSwgMTggPSA1KQoJCQoJCTU2LjI4ID0gMTg4KDU2LCA0NCA9ICIxNmUiKQoJCTU2LjI4LjY1KDE4MiA9IDIsIDE3YyA9IDIsIDE5ID0gNSwgMTggPSA1KQoJCTU2LjE4NiA9IDMwKDU2KQoJCTU2LjE4Ni42NSgxODIgPSAzLCAxN2MgPSAyLCAxOSA9IDUsIDE4ID0gNSkKCgkJNTYuNDcgPSAxNGMoNTYsIDQ0ID0gImFkIiwgYjMgPSA1Ni4zNCkKCQk1Ni40Ny42NSgxODIgPSA0LCAxN2MgPSAwLCAxODcgPSAzKQoKCQk1Ni4xNTkgPSAxODgoNTYpCgkJNTYuMTU5LjY1KDE4MiA9IDUsIDE3YyA9IDAsIDE4NyA9IDMpCgoJCTU2LmMgPSA1OCg1NiwgNzEgPSAxNDksIDQ2ID0gMjApCgkJNTYuYy42NSgxODIgPSA2LCAxN2MgPSAwLCAxODcgPSAzKQoKCQk1Ni4xMiA9IDE4OCg1NikKCQk1Ni4xMi42NSgxODIgPSA2LCAxN2MgPSAwLCA1MSA9IDE4NSkKCQkKCQk1Ni44ID0gNTgoNTYsIDcxID0gMTQ5LCA0NiA9IDIwKQoJCTU2LjguNjUoMTgyID0gNywgMTdjID0gMCwgMTg3ID0gMykKCgkJNTYuZCA9IDE4OCg1NikKCQk1Ni5kLjY1KDE4MiA9IDcsIDE3YyA9IDAsIDUxID0gMTg1KQoKCTUyIDM0KDU2KToKCQkxNzc6CgkJCTI1ID0gNTQoNTYuMWEuODgoKSkKCQkJZiA9IDU0KDU2LjEwLjg4KCkpCgkJCTFiID0gNTQoNTYuMTg2Ljg4KCkpCgkJMTAxIDc0OgoJCQk1Ni4xNTlbIjQ0Il0gPSAiMjMgNTcgMWQgMWUgMTQuIgoJCQkxMQoKCQkxMjEgMjUgMWQgNGYgMjIoOGMpOgoJCQk1Ni4xNTlbIjQ0Il0gPSAiMjMgNTcgMWQgMWUgMTQuIgoJCQkxMQoJCTEyMSBmIDFkIDRmIDIyKDhjKToKCQkJNTYuMTU5WyI0NCJdID0gIjIzIDU3IDFkIDFlIDE0LiIKCQkJMTEKCQkxMjEgMWIgMWQgNGYgMjIoOGMpOgoJCQk1Ni4xNTlbIjQ0Il0gPSAiMjMgNTcgMWQgMWUgMTQuIgoJCQkxMQoJCQoJCTkgPSB7fQoJCTI3ID0ge30KCQllMCAxODMsIDE1IDRmIDI2LjE1YSgpOgoJCQkyN1sxNV0gPSAxODMKCQkJYTgsIDUzLCA2ZCA9IDIxKDE4MykKCQkJM2EgPSA4NihhOCAtIDI1KQoJCQkyOSA9IDg2KDUzIC0gZikKCQkJMmYgPSA4Nig2ZCAtIDFiKQoJCQk5WzNhICsgMjkgKyAyZl0gPSAxNQoJCTE3ID0gOVsxN2UoOS4xNzYoKSldOwoKCQkxODMgPSAyN1sxN10KCgkJMmQgPSAnIyU4MSU4MSU4MScgJSAoMjUsIGYsIDFiKQoJCQoJCTU2LjE1OVsiNDQiXSA9ICIxN2QgMTcgMTg0ICIgKyAgMTcKCQk1Ni4xMlsiNDQiXSA9ICIoIiArIDk2KDI1KSArICIsICIgKyA5NihmKSArICIsICIgKyA5NigxYikgKyAiKSIKCQk1Ni5kWyI0NCJdID0gMTcKCQk1Ni5jLmUoMjAsIDAsIDEwNSwgMjAsIGEwID0gMmQpCgkJNTYuOC5lKDIwLCAwLCAxMDUsIDIwLCBhMCA9IDE4MykKCjFmID0gMTgxKCkKMWYuMTY1KCIxMTAgMTgwIDE2MyAxNmYgN2UiKQoxZi45YigiYjQiKQoxN2EgPSAxYygxZikKCjFmLmExKCk=")))(lambda a,b:b[int("0x"+a.group(1),16)],"0|1|2|3|4|5|6|7|colorCanvas1|colorDifs|a|instructionsLabel|colorCanvas|canvasText1|create_rectangle|green|greenEntry|return|canvasText|value|numbers|colorName|16|color|pady|padx|redEntry|blue|Application|not|valid|root|20|hex_to_rgb|range|Those|lightgoldenrodyellow|red|colorlist|colors|blueLabel|green_dif|mediumspringgreen|__init__|redLabel|rectFill|mediumaquamarine|blue_dif|Entry|mediumslateblue|mediumvioletred|mediumturquoise|convert|lightsteelblue|darkolivegreen|cornflowerblue|lightslategrey|mediumseagreen|red_dif|blanchedalmond|darkturquoise|darkslateblue|lightseagreen|darkslategray|darkgoldenrod|paleturquoise|lavenderblush|palevioletred|text|palegoldenrod|height|submit|lightskyblue|darkseagreen|greenLabel|antiquewhite|lemonchiffon|master|midnightblue|in|mediumorchid|sticky|def|green1|int|mediumpurple|self|are|Canvas|forestgreen|greenyellow|lightyellow|saddlebrown|darkmagenta|navajowhite|yellowgreen|deepskyblue|floralwhite|lightsalmon|springgreen|sandybrown|grid|lightgreen|blueviolet|darkviolet|lightcoral|Frame|mediumblue|whitesmoke|blue1|darksalmon|aquamarine|papayawhip|width|darkorchid|darkorange|ValueError|dodgerblue|powderblue|ghostwhite|chartreuse|darkgreen|darkkhaki|cadetblue|chocolate|mistyrose|Converter|indianred|000080|02x|lightcyan|steelblue|firebrick|turquoise|abs|slategray|get|palegreen|limegreen|00008b|256|rosybrown|slateblue|olivedrab|peachpuff|lawngreen|burlywood|royalblue|goldenrod|aliceblue|str|orangered|lightgray|mintcream|lightpink|geometry|seagreen|seashell|lavender|lv|fill|mainloop|darkcyan|deeppink|darkgray|moccasin|darkblue|honeydew|red1|loop|cornsilk|thistle|hotpink|Convert|dimgrey|oldlace|crimson|darkred|magenta|command|460x180|skyblue|Tkinter|708090|00ff7f|fdf5e6|e6e6fa|dda0dd|da70d6|ffefd5|ba55d3|b22222|maroon|fff0f5|fff8dc|f5fffa|d8bfd8|ff7f50|cd853f|gainsboro|87ceeb|adff2f|98fb98|f08080|f0e68c|0000cd|import|ff69b4|bisque|ff00ff|7fffd4|d3d3d3|f8f8ff|008080|6a5acd|778899|d87093|7cfc00|e9967a|9370d8|808000|afeeee|f5f5dc|20b2aa|for|c0c0c0|d2b48c|2e8b57|f5f5f5|8b4513|66cdaa|ffa500|fafad2|7b68ee|c71585|6b8e23|orange|faf0e6|4169e1|40e0d0|lightblue|ffffff|8a2be2|add8e6|7fff00|ffa07a|006400|fffff0|fff5ee|8b0000|6495ed|9400d3|ffd700|dcdcdc|00ced1|0000ff|dc143c|except|008000|f0fff0|808080|440|ffff00|f4a460|32cd32|f0ffff|87cefa|9acd32|4682b4|fffaf0|daa520|ffffe0|RGB|00ff00|fa8072|ff1493|008b8b|fffafa|b8860b|ff8c00|ffc0cb|191970|ffb6c1|00ffff|sienna|d2691e|cd5c5c|00fa9a|a52a2a|if|faebd7|800080|deb887|purple|4b0082|556b2f|bc8f8f|ffe4e1|8b008b|3cb371|ffe4b5|ee82ee|f0f8ff|a0522d|silver|violet|ffebcd|483d8b|1e90ff|ff6347|f5deb3|00bfff|eee8aa|000000|orchid|9932cc|2f4f4f|8fbc8f|ffe4c4|48d1cc|5f9ea0|salmon|800000|ff0000|fffacd|ffdab9|lstrip|ffdead|yellow|460|b0c4de|ff4500|Button|228b22|e0ffff|a9a9a9|b0e0e6|90ee90|bdb76b|696969|tomato|indigo|black|wheat|ivory|colorLabel|items|beige|Green|khaki|brown|olive|Enter|tuple|class|Color|linen|title|white|azure|coral|plum|peru|aqua|lime|from|Blue|Name|gold|snow|grey|teal|navy|pink|keys|try|i|len|app|Red|column|The|min|tan|to|Tk|row|hexValue|is|W|blueEntry|columnspan|Label".split("|")))


### Not Obfuscated (6,898 bytes):

from Tkinter import *
colorlist = {'#7cfc00': 'lawngreen', '#808080': 'grey', '#00008b': 'darkblue', '#ffe4b5': 'moccasin', '#fffff0': 'ivory', '#9400d3': 'darkviolet', '#b8860b': 'darkgoldenrod', '#fffaf0': 'floralwhite', '#8b008b': 'darkmagenta', '#fff5ee': 'seashell', '#ff8c00': 'darkorange', '#5f9ea0': 'cadetblue', '#2f4f4f': 'darkslategray', '#afeeee': 'paleturquoise', '#add8e6': 'lightblue', '#fffafa': 'snow', '#1e90ff': 'dodgerblue', '#000000': 'black', '#8fbc8f': 'darkseagreen', '#7fffd4': 'aquamarine', '#ffe4e1': 'mistyrose', '#800000': 'maroon', '#6495ed': 'cornflowerblue', '#4169e1': 'royalblue', '#40e0d0': 'turquoise', '#ffffff': 'white', '#00ced1': 'darkturquoise', '#8b0000': 'darkred', '#ee82ee': 'violet', '#adff2f': 'greenyellow', '#b0e0e6': 'powderblue', '#7b68ee': 'mediumslateblue', '#ff00ff': 'magenta', '#4682b4': 'steelblue', '#ff6347': 'tomato', '#00ff7f': 'springgreen', '#ffefd5': 'papayawhip', '#ffd700': 'gold', '#f5fffa': 'mintcream', '#dda0dd': 'plum', '#cd5c5c': 'indianred', '#ffa07a': 'lightsalmon', '#00fa9a': 'mediumspringgreen', '#f8f8ff': 'ghostwhite', '#008000': 'green', '#faebd7': 'antiquewhite', '#f0fff0': 'honeydew', '#c0c0c0': 'silver', '#228b22': 'forestgreen', '#7fff00': 'chartreuse', '#fafad2': 'lightgoldenrodyellow', '#fff8dc': 'cornsilk', '#f4a460': 'sandybrown', '#6b8e23': 'olivedrab', '#9932cc': 'darkorchid', '#fdf5e6': 'oldlace', '#3cb371': 'mediumseagreen', '#d8bfd8': 'thistle', '#808000': 'olive', '#a9a9a9': 'darkgray', '#f5f5dc': 'beige', '#f5deb3': 'wheat', '#ffa500': 'orange', '#00ff00': 'lime', '#90ee90': 'lightgreen', '#a0522d': 'sienna', '#8b4513': 'saddlebrown', '#00ffff': 'aqua', '#4b0082': 'indigo', '#66cdaa': 'mediumaquamarine', '#b22222': 'firebrick', '#d2b48c': 'tan', '#ffebcd': 'blanchedalmond', '#0000ff': 'blue', '#da70d6': 'orchid', '#fffacd': 'lemonchiffon', '#ff7f50': 'coral', '#f5f5f5': 'whitesmoke', '#ffc0cb': 'pink', '#f0e68c': 'khaki', '#ffffe0': 'lightyellow', '#f0ffff': 'azure', '#f0f8ff': 'aliceblue', '#daa520': 'goldenrod', '#c71585': 'mediumvioletred', '#b0c4de': 'lightsteelblue', '#fa8072': 'salmon', '#708090': 'slategray', '#ff1493': 'deeppink', '#6a5acd': 'slateblue', '#2e8b57': 'seagreen', '#e9967a': 'darksalmon', '#778899': 'lightslategrey', '#ba55d3': 'mediumorchid', '#ff4500': 'orangered', '#a52a2a': 'brown', '#696969': 'dimgrey', '#191970': 'midnightblue', '#dc143c': 'crimson', '#bdb76b': 'darkkhaki', '#ffff00': 'yellow', '#d87093': 'palevioletred', '#556b2f': 'darkolivegreen', '#9370d8': 'mediumpurple', '#eee8aa': 'palegoldenrod', '#cd853f': 'peru', '#faf0e6': 'linen', '#bc8f8f': 'rosybrown', '#d2691e': 'chocolate', '#008080': 'teal', '#98fb98': 'palegreen', '#ff69b4': 'hotpink', '#e0ffff': 'lightcyan', '#87cefa': 'lightskyblue', '#ffdead': 'navajowhite', '#483d8b': 'darkslateblue', '#32cd32': 'limegreen', '#e6e6fa': 'lavender', '#800080': 'purple', '#d3d3d3': 'lightgray', '#006400': 'darkgreen', '#0000cd': 'mediumblue', '#00bfff': 'deepskyblue', '#ffe4c4': 'bisque', '#48d1cc': 'mediumturquoise', '#008b8b': 'darkcyan', '#9acd32': 'yellowgreen', '#f08080': 'lightcoral', '#ff0000': 'red', '#deb887': 'burlywood', '#ffb6c1': 'lightpink', '#20b2aa': 'lightseagreen', '#87ceeb': 'skyblue', '#fff0f5': 'lavenderblush', '#8a2be2': 'blueviolet', '#000080': 'navy', '#dcdcdc': 'gainsboro', '#ffdab9': 'peachpuff'}

def hex_to_rgb(value):
value = value.lstrip('#')
lv = len(value)
return tuple(int(value[i:i+lv/3], 16) for i in range(0, lv, lv/3))

class Application(Frame):

def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.loop()

def loop(self):
self.instructionsLabel = Label(self, text = "Enter in a RGB value.")
self.instructionsLabel.grid(row = 1, column = 0, columnspan = 3)

self.redLabel = Label(self, text = "Red")
self.redLabel.grid(row = 2, column = 0, padx = 5, pady = 5)
self.redEntry = Entry(self)
self.redEntry.grid(row = 3, column = 0, padx = 5, pady = 5)

self.greenLabel = Label(self, text = "Green")
self.greenLabel.grid(row = 2, column = 1, padx = 5, pady = 5)
self.greenEntry = Entry(self)
self.greenEntry.grid(row = 3, column = 1, padx = 5, pady = 5)

self.blueLabel = Label(self, text = "Blue")
self.blueLabel.grid(row = 2, column = 2, padx = 5, pady = 5)
self.blueEntry = Entry(self)
self.blueEntry.grid(row = 3, column = 2, padx = 5, pady = 5)

self.submit = Button(self, text = "Convert", command = self.convert)
self.submit.grid(row = 4, column = 0, columnspan = 3)

self.colorLabel = Label(self)
self.colorLabel.grid(row = 5, column = 0, columnspan = 3)

self.colorCanvas = Canvas(self, width = 460, height = 20)
self.colorCanvas.grid(row = 6, column = 0, columnspan = 3)

self.canvasText = Label(self)
self.canvasText.grid(row = 6, column = 0, sticky = W)

self.colorCanvas1 = Canvas(self, width = 460, height = 20)
self.colorCanvas1.grid(row = 7, column = 0, columnspan = 3)

self.canvasText1 = Label(self)
self.canvasText1.grid(row = 7, column = 0, sticky = W)

def convert(self):
try:
red = int(self.redEntry.get())
green = int(self.greenEntry.get())
blue = int(self.blueEntry.get())
except ValueError:
self.colorLabel["text"] = "Those are not valid numbers."
return

if red not in range(256):
self.colorLabel["text"] = "Those are not valid numbers."
return
if green not in range(256):
self.colorLabel["text"] = "Those are not valid numbers."
return
if blue not in range(256):
self.colorLabel["text"] = "Those are not valid numbers."
return

colorDifs = {}
colors = {}
for hexValue, colorName in colorlist.items():
colors[colorName] = hexValue
red1, green1, blue1 = hex_to_rgb(hexValue)
red_dif = abs(red1 - red)
green_dif = abs(green1 - green)
blue_dif = abs(blue1 - blue)
colorDifs[red_dif + green_dif + blue_dif] = colorName
color = colorDifs[min(colorDifs.keys())];

hexValue = colors[color]

rectFill = '#%02x%02x%02x' % (red, green, blue)

self.colorLabel["text"] = "The color is " +  color
self.canvasText["text"] = "(" + str(red) + ", " + str(green) + ", " + str(blue) + ")"
self.canvasText1["text"] = color
self.colorCanvas.create_rectangle(20, 0, 440, 20, fill = rectFill)
self.colorCanvas1.create_rectangle(20, 0, 440, 20, fill = hexValue)

root = Tk()
root.title("RGB to Color Name Converter")
root.geometry("460x180")
app = Application(root)

root.mainloop()


### Obfuscated (6,543 bytes):

exec("import re;import base64");exec((lambda p,y:(lambda o,b,f:re.sub(o,b,f))(r"([0-9a-f]+)",lambda m:p(m,y),base64.b64decode("MTMgPSB7JyMxMGYnOiAnNTcnLCAnIzExOCc6ICcxMzgnLCAnIzhiJzogJzc5JywgJyNmYyc6ICc3NScsICcjZDgnOiAnMTI2JywgJyNjNic6ICc1NScsICcjYTMnOiAnMjknLCAnIzkwJzogJzNkJywgJyNmMyc6ICc0MScsICcjZGEnOiAnNzcnLCAnIzEwMic6ICc0NycsICcjZTQnOiAnNWQnLCAnI2IxJzogJzJjJywgJyMxMTUnOiAnMmEnLCAnI2NjJzogJzcwJywgJyM5ZCc6ICcxM2UnLCAnIzhjJzogJzQ5JywgJyMxNGMnOiAnMTI5JywgJyNiMic6ICczNicsICcjZmInOiAnNDgnLCAnI2YwJzogJzY1JywgJyNkYyc6ICdhNScsICcjZTInOiAnMjEnLCAnI2JiJzogJzViJywgJyMxMjQnOiAnNjcnLCAnI2M3JzogJzEyYScsICcjZjYnOiAnMmUnLCAnI2RlJzogJzgxJywgJyMxMDEnOiAnMTFjJywgJyNkNSc6ICczYicsICcjMTA5JzogJzRiJywgJyNhOSc6ICcxZCcsICcjZjUnOiAnODQnLCAnIzkxJzogJzU4JywgJyM4ZCc6ICcxMWEnLCAnIzk1JzogJzQzJywgJyM5YSc6ICc1MCcsICcjZDMnOiAnMTNiJywgJyNiNic6ICc1ZScsICcjOTMnOiAnMTNhJywgJyNiZic6ICc2YycsICcjZjknOiAnM2YnLCAnI2MzJzogJzE0ZScsICcjMTAzJzogJzUyJywgJyMxMTAnOiAnMTRmJywgJyNjZic6ICczNCcsICcjMTE2JzogJzc2JywgJyM4Zic6ICcxMTknLCAnI2ZkJzogJzM5JywgJyNjZSc6ICc1NCcsICcjYTgnOiAnMTInLCAnI2FjJzogJzdlJywgJyMxMWQnOiAnNDUnLCAnI2IzJzogJzU5JywgJyNhYic6ICc1MycsICcjYjUnOiAnODYnLCAnI2Y4JzogJzIzJywgJyNiZSc6ICc4MicsICcjMTEzJzogJzEyZScsICcjZWInOiAnN2YnLCAnIzEyMic6ICcxMmInLCAnI2RkJzogJzEzMycsICcjOWUnOiAnYjQnLCAnI2Y3JzogJzEzNycsICcjMTBlJzogJzQ2JywgJyNkZic6ICdiYycsICcjY2InOiAnNDAnLCAnI2I4JzogJzEzNicsICcjMTA2JzogJzExZScsICcjOWMnOiAnMTgnLCAnIzlmJzogJzY0JywgJyM5Mic6ICcxNDgnLCAnIzExZic6ICcyNicsICcjZmYnOiAnNScsICcjOTYnOiAnYTInLCAnI2UwJzogJzM4JywgJyNjMCc6ICcxMzUnLCAnIzk4JzogJzUxJywgJyNhZSc6ICcxNDAnLCAnI2U3JzogJzEyNScsICcjOTcnOiAnM2MnLCAnIzEyMyc6ICcxMzEnLCAnI2M4JzogJzY4JywgJyM5OSc6ICc2NicsICcjYWQnOiAnMWMnLCAnI2Y0JzogJzI1JywgJyNiYSc6ICdkYicsICcjYzEnOiAnNmInLCAnI2UxJzogJzdjJywgJyMxMGEnOiAnNjEnLCAnI2Q5JzogJzdhJywgJyNhMCc6ICc0YScsICcjZWMnOiAnMjQnLCAnI2M5JzogJzM3JywgJyM5NCc6ICc2ZCcsICcjYzQnOiAnMTJkJywgJyMxMTcnOiAnODUnLCAnI2IwJzogJzMwJywgJyMxMDQnOiAnODgnLCAnI2ZlJzogJzVjJywgJyMxMWInOiAnZWYnLCAnIzEwZCc6ICcyNycsICcjZTgnOiAnMjInLCAnIzExMSc6ICczMScsICcjOGUnOiAnMmYnLCAnI2NhJzogJzEzYycsICcjYjknOiAnMTI3JywgJyNlYSc6ICc2MCcsICcjYmQnOiAnNjMnLCAnIzEwOCc6ICcxMzknLCAnI2Q2JzogJzcyJywgJyMxMDUnOiAnODMnLCAnI2FmJzogJzczJywgJyMxMGMnOiAnMzUnLCAnI2VlJzogJzNhJywgJyM4OSc6ICcyZCcsICcjMTIwJzogJzVhJywgJyNhYSc6ICc3OCcsICcjMTA3JzogJ2Q3JywgJyMxMDAnOiAnNmYnLCAnI2VkJzogJzU2JywgJyNjZCc6ICc0ZScsICcjMTEyJzogJzQyJywgJyNjNSc6ICdmMicsICcjYzInOiAnMWYnLCAnIzliJzogJzhhJywgJyNkMCc6ICczZScsICcjYTQnOiAnNDQnLCAnIzEwYic6ICdhJywgJyNkNCc6ICc2YScsICcjYjcnOiAnNzQnLCAnIzExNCc6ICcyYicsICcjZDEnOiAnODcnLCAnI2E3JzogJzI4JywgJyNmYSc6ICc0YycsICcjODAnOiAnMTNmJywgJyNlNic6ICc1ZicsICcjZTMnOiAnNzEnfQoxMjEgMTAoNyk6Cgk3ID0gNy5lOSgnIycpCgk3YiA9IDE0OSg3KQoJMzIgMTM0KGUoN1sxNDY6MTQ2KzdiLzNdLCAxNikgZjEgMTQ2IDRkIGYoMTRjLCA3YiwgN2IvMykpCgoxMjEgMWIoNik6CglkID0ge307CglmMSAxYSwgNCA0ZCAxMy4xMzIoKToKCQlhLCAxNGYsIDUgPSAxMCgxYSk7CgkJMjAgPSA2OShhIC0gNlsxNGNdKTsKCQkxNSA9IDY5KDE0ZiAtIDZbMV0pCgkJMTcgPSA2OSg1IC0gNlsyXSkKCQlkWzIwICsgMTUgKyAxN10gPSA0CgkzMiBkWzE0NShkLjEzZCgpKV07CgoxMSAxOToKCgljICJhNiAxMjggMTQ0IDE0MiA3LiI7CglhMSgiLS0xMmYgMTJjIDE0ZCA3ZC0tXDRmPiAiKTsKCglhLCAxNGYsIDUgPSAiIiwgIiIsICIiOwoJYSA9IGExKCIxNDdcNGY+ICIpOwoJMTEgMTk6CgkJYjoKCQkJZTUgZShhKSA2MiA0ZCBmKDZlKToKCQkJCWEgPSBhMSgiLS0xNGItLVwxNTAgYiA4XDRmPiAiKTsKCQkJMzM6CgkJCQkxZTsKCQkxNCA5OgoJCQlhID0gYTEoIi0tMTRiLS1cMTUwIGIgOFw0Zj4gIik7CgoJMTRmID0gYTEoIjEzMFw0Zj4gIik7CgkxMSAxOToKCQliOgoJCQllNSBlKDE0ZikgNjIgNGQgZig2ZSk6CgkJCQkxNGYgPSBhMSgiLS0xNGItLVwxNTAgYiA4XDRmPiAiKTsKCQkJMzM6CgkJCQkxZTsKCQkxNCA5OgoJCQkxNGYgPSBhMSgiLS0xNGItLVwxNTAgYiA4XDRmPiAiKTsKCgk1ID0gYTEoIjE0MVw0Zj4gIik7CgkxMSAxOToKCQliOgoJCQllNSBlKDUpIDYyIDRkIGYoNmUpOgoJCQkJNSA9IGExKCItLTE0Yi0tXDE1MCBiIDhcNGY+ICIpOwoJCQkzMzoKCQkJCTFlOwoJCTE0IDk6CgkJCTUgPSBhMSgiLS0xNGItLVwxNTAgYiA4XDRmPiAiKTsKCglkMiA9IChlKGEpLCBlKDE0ZiksIGUoNSkpOwoJNCA9IDFiKGQyKTsKCgljICIxNDMgMWIgMTRhIiwgNDsKCWMKCWMKCWM=")))(lambda a,b:b[int("0x"+a.group(1),16)],"000000|1|2|3|colorName|blue|rgbValue|value|again|ValueError|red|try|print|colors|int|range|hex_to_rgb|while|lightgoldenrodyellow|colorlist|except|green_dif|16|blue_dif|mediumaquamarine|True|hexValue|color|mediumvioletred|mediumslateblue|break|mediumturquoise|red_dif|cornflowerblue|darkolivegreen|mediumseagreen|lightslategrey|lightsteelblue|blanchedalmond|palevioletred|lavenderblush|darkgoldenrod|paleturquoise|lightseagreen|darkslategray|darkslateblue|darkturquoise|palegoldenrod|midnightblue|mediumpurple|return|else|antiquewhite|lightskyblue|darkseagreen|mediumorchid|lemonchiffon|forestgreen|navajowhite|greenyellow|lightyellow|floralwhite|yellowgreen|lightsalmon|saddlebrown|darkmagenta|deepskyblue|springgreen|lightcoral|sandybrown|lightgreen|darkorange|aquamarine|dodgerblue|darksalmon|powderblue|blueviolet|in|mediumblue|n|papayawhip|whitesmoke|ghostwhite|darkorchid|chartreuse|darkviolet|darkgreen|lawngreen|steelblue|olivedrab|limegreen|royalblue|darkkhaki|cadetblue|mintcream|gainsboro|rosybrown|slateblue|not|chocolate|firebrick|mistyrose|goldenrod|turquoise|aliceblue|abs|burlywood|slategray|indianred|orangered|256|lightgray|lightblue|peachpuff|palegreen|lightcyan|lightpink|moccasin|honeydew|seashell|lavender|darkblue|seagreen|lv|deeppink|continue|cornsilk|darkgray|000080|darkred|thistle|hotpink|magenta|dimgrey|oldlace|skyblue|crimson|483d8b|darkcyan|00008b|1e90ff|ff6347|eee8aa|c0c0c0|fffaf0|4682b4|d2b48c|dda0dd|ff4500|00ff7f|da70d6|ffffe0|f5f5f5|daa520|ffefd5|008b8b|66cdaa|fffafa|ffa500|b22222|e9967a|raw_input|orchid|b8860b|f08080|maroon|Please|fff0f5|fafad2|7b68ee|e6e6fa|9932cc|fff8dc|c71585|ffc0cb|e0ffff|191970|2f4f4f|8fbc8f|6b8e23|orange|fdf5e6|f5fffa|ffb6c1|00ffff|faf0e6|fa8072|4169e1|sienna|d2691e|d8bfd8|cd5c5c|ff7f50|708090|48d1cc|00fa9a|a52a2a|ffe4c4|9400d3|ffffff|f0f8ff|ba55d3|cd853f|8b4513|add8e6|0000cd|7fff00|faebd7|9acd32|87ceeb|rgb|ffd700|deb887|adff2f|98fb98|purple|fffff0|2e8b57|fff5ee|salmon|800000|f5deb3|8b0000|a0522d|fffacd|ff1493|6495ed|ffdab9|5f9ea0|if|dcdcdc|f0e68c|556b2f|lstrip|bc8f8f|a9a9a9|778899|006400|ffdead|yellow|ffe4e1|for|bisque|8b008b|b0c4de|ff00ff|00ced1|00ff00|3cb371|ffa07a|8a2be2|7fffd4|ffe4b5|228b22|bdb76b|0000ff|d3d3d3|ee82ee|ff8c00|f8f8ff|dc143c|ff69b4|4b0082|800080|008080|b0e0e6|6a5acd|ff0000|87cefa|d87093|90ee90|7cfc00|008000|9370d8|00bfff|808000|20b2aa|afeeee|f0fff0|696969|808080|silver|tomato|ffff00|violet|f4a460|indigo|ffebcd|32cd32|def|f5f5dc|f0ffff|40e0d0|khaki|ivory|linen|input|black|white|beige|ENTER|brown|olive|Press|GREEN|azure|items|wheat|tuple|coral|aqua|lime|grey|teal|plum|gold|peru|keys|snow|navy|pink|BLUE|RGB|The|the|min|i|RED|tan|len|is|INVALID|0|to|mediumspringgreen|green|nPlease".split("|")))


### Not Obfuscated (5,050 bytes):

colorlist = {'#7cfc00': 'lawngreen', '#808080': 'grey', '#00008b': 'darkblue', '#ffe4b5': 'moccasin', '#fffff0': 'ivory', '#9400d3': 'darkviolet', '#b8860b': 'darkgoldenrod', '#fffaf0': 'floralwhite', '#8b008b': 'darkmagenta', '#fff5ee': 'seashell', '#ff8c00': 'darkorange', '#5f9ea0': 'cadetblue', '#2f4f4f': 'darkslategray', '#afeeee': 'paleturquoise', '#add8e6': 'lightblue', '#fffafa': 'snow', '#1e90ff': 'dodgerblue', '#000000': 'black', '#8fbc8f': 'darkseagreen', '#7fffd4': 'aquamarine', '#ffe4e1': 'mistyrose', '#800000': 'maroon', '#6495ed': 'cornflowerblue', '#4169e1': 'royalblue', '#40e0d0': 'turquoise', '#ffffff': 'white', '#00ced1': 'darkturquoise', '#8b0000': 'darkred', '#ee82ee': 'violet', '#adff2f': 'greenyellow', '#b0e0e6': 'powderblue', '#7b68ee': 'mediumslateblue', '#ff00ff': 'magenta', '#4682b4': 'steelblue', '#ff6347': 'tomato', '#00ff7f': 'springgreen', '#ffefd5': 'papayawhip', '#ffd700': 'gold', '#f5fffa': 'mintcream', '#dda0dd': 'plum', '#cd5c5c': 'indianred', '#ffa07a': 'lightsalmon', '#00fa9a': 'mediumspringgreen', '#f8f8ff': 'ghostwhite', '#008000': 'green', '#faebd7': 'antiquewhite', '#f0fff0': 'honeydew', '#c0c0c0': 'silver', '#228b22': 'forestgreen', '#7fff00': 'chartreuse', '#fafad2': 'lightgoldenrodyellow', '#fff8dc': 'cornsilk', '#f4a460': 'sandybrown', '#6b8e23': 'olivedrab', '#9932cc': 'darkorchid', '#fdf5e6': 'oldlace', '#3cb371': 'mediumseagreen', '#d8bfd8': 'thistle', '#808000': 'olive', '#a9a9a9': 'darkgray', '#f5f5dc': 'beige', '#f5deb3': 'wheat', '#ffa500': 'orange', '#00ff00': 'lime', '#90ee90': 'lightgreen', '#a0522d': 'sienna', '#8b4513': 'saddlebrown', '#00ffff': 'aqua', '#4b0082': 'indigo', '#66cdaa': 'mediumaquamarine', '#b22222': 'firebrick', '#d2b48c': 'tan', '#ffebcd': 'blanchedalmond', '#0000ff': 'blue', '#da70d6': 'orchid', '#fffacd': 'lemonchiffon', '#ff7f50': 'coral', '#f5f5f5': 'whitesmoke', '#ffc0cb': 'pink', '#f0e68c': 'khaki', '#ffffe0': 'lightyellow', '#f0ffff': 'azure', '#f0f8ff': 'aliceblue', '#daa520': 'goldenrod', '#c71585': 'mediumvioletred', '#b0c4de': 'lightsteelblue', '#fa8072': 'salmon', '#708090': 'slategray', '#ff1493': 'deeppink', '#6a5acd': 'slateblue', '#2e8b57': 'seagreen', '#e9967a': 'darksalmon', '#778899': 'lightslategrey', '#ba55d3': 'mediumorchid', '#ff4500': 'orangered', '#a52a2a': 'brown', '#696969': 'dimgrey', '#191970': 'midnightblue', '#dc143c': 'crimson', '#bdb76b': 'darkkhaki', '#ffff00': 'yellow', '#d87093': 'palevioletred', '#556b2f': 'darkolivegreen', '#9370d8': 'mediumpurple', '#eee8aa': 'palegoldenrod', '#cd853f': 'peru', '#faf0e6': 'linen', '#bc8f8f': 'rosybrown', '#d2691e': 'chocolate', '#008080': 'teal', '#98fb98': 'palegreen', '#ff69b4': 'hotpink', '#e0ffff': 'lightcyan', '#87cefa': 'lightskyblue', '#ffdead': 'navajowhite', '#483d8b': 'darkslateblue', '#32cd32': 'limegreen', '#e6e6fa': 'lavender', '#800080': 'purple', '#d3d3d3': 'lightgray', '#006400': 'darkgreen', '#0000cd': 'mediumblue', '#00bfff': 'deepskyblue', '#ffe4c4': 'bisque', '#48d1cc': 'mediumturquoise', '#008b8b': 'darkcyan', '#9acd32': 'yellowgreen', '#f08080': 'lightcoral', '#ff0000': 'red', '#deb887': 'burlywood', '#ffb6c1': 'lightpink', '#20b2aa': 'lightseagreen', '#87ceeb': 'skyblue', '#fff0f5': 'lavenderblush', '#8a2be2': 'blueviolet', '#000080': 'navy', '#dcdcdc': 'gainsboro', '#ffdab9': 'peachpuff'}
def hex_to_rgb(value):
value = value.lstrip('#')
lv = len(value)
return tuple(int(value[i:i+lv/3], 16) for i in range(0, lv, lv/3))

def color(rgbValue):
colors = {};
for hexValue, colorName in colorlist.items():
red, green, blue = hex_to_rgb(hexValue);
red_dif = abs(red - rgbValue[0]);
green_dif = abs(green - rgbValue[1])
blue_dif = abs(blue - rgbValue[2])
colors[red_dif + green_dif + blue_dif] = colorName
return colors[min(colors.keys())];

while True:

print "Please input the RGB value.";
raw_input("--Press ENTER to continue--\n> ");

red, green, blue = "", "", "";
red = raw_input("RED\n> ");
while True:
try:
if int(red) not in range(256):
red = raw_input("--INVALID--\nPlease try again\n> ");
else:
break;
except ValueError:
red = raw_input("--INVALID--\nPlease try again\n> ");

green = raw_input("GREEN\n> ");
while True:
try:
if int(green) not in range(256):
green = raw_input("--INVALID--\nPlease try again\n> ");
else:
break;
except ValueError:
green = raw_input("--INVALID--\nPlease try again\n> ");

blue = raw_input("BLUE\n> ");
while True:
try:
if int(blue) not in range(256):
blue = raw_input("--INVALID--\nPlease try again\n> ");
else:
break;
except ValueError:
blue = raw_input("--INVALID--\nPlease try again\n> ");

rgb = (int(red), int(green), int(blue));
colorName = color(rgb);

print "The color is", colorName;
print
print
print


# Javascript

https://jsfiddle.net/SuperJedi224/goxyhm7a/

Some sample results [as of July 31] (colors listed are, in order, the one it determines as the closest and the one it determines as the second closest; except where only one is given, in which case it was determined to be an exact match):

Bright Navy Blue / Steel Blue

Bronze / Tan Yellow Orange

Topaz / Pear

Slime Green / Olive Green

Viridian / Emerald

VB.net

Function ColorName(r AS Integer, g As Integer, b As Integer)As String
Dim nc = Color.FromArgb(255, r, g, b)
For Each ob In [Enum].GetValues(GetType(System.Drawing.KnownColor))
Dim c = Color.FromKnownColor(CType(ob, System.Drawing.KnownColor))
If (c.R = nc.R) AndAlso (c.B = nc.B) AndAlso (c.G = nc.G) Then Return c.Name
Next
Return nc.Name
End Function

• Am I missing something? This seems to cover only 174 out of 16 M possible RGB colors. Jun 27 '14 at 14:39
• @JonofAllTrades Depends on the questions definition output the colors name. Eg If the color doesn't have a name then it outputs the html color eg &FFFFFFFF. Does the question say output the name of the "nearest" known named color. Nope. Jun 28 '14 at 8:30
• As always, you like to interpret things in a different way from others. Jul 2 '14 at 0:20