T
op
S
CRIPTS
AUTO
M
OBILES
D
OWNLOADS
L
INK
B
BS
A
BOUT
F
EEDBACK
RGB16進法→色名変換
サンプル
ソースコード
HEADに記述
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> <!-- //変換テーブル var colorNames = new Array(); colorNames["aliceblue"] = new Array(0xF0, 0xF8, 0xFF); colorNames["antiquewhite"] = new Array(0xFA, 0xEB, 0xD7); colorNames["aqua"] = new Array(0x00, 0xFF, 0xFF); colorNames["aquamarine"] = new Array(0x7F, 0xFF, 0xD4); colorNames["azure"] = new Array(0xF0, 0xFF, 0xFF); colorNames["beige"] = new Array(0xF5, 0xF5, 0xDC); colorNames["bisque"] = new Array(0xFF, 0xE4, 0xC4); colorNames["black"] = new Array(0x00, 0x00, 0x00); colorNames["blanchedalmond"] = new Array(0xFF, 0xEB, 0xCD); colorNames["blue"] = new Array(0x00, 0x00, 0xFF); colorNames["blueviolet"] = new Array(0x8A, 0x2B, 0xE2); colorNames["brown"] = new Array(0xA5, 0x2A, 0x2A); colorNames["burlywood"] = new Array(0xDE, 0xB8, 0x87); colorNames["cadetblue"] = new Array(0x5F, 0x9E, 0xA0); colorNames["chartreuse"] = new Array(0x7F, 0xFF, 0x00); colorNames["chocolate"] = new Array(0xD2, 0x69, 0x1E); colorNames["coral"] = new Array(0xFF, 0x7F, 0x50); colorNames["cornflowerblue"] = new Array(0x64, 0x95, 0xED); colorNames["cornsilk"] = new Array(0xFF, 0xF8, 0xDC); colorNames["crimson"] = new Array(0xDC, 0x14, 0x3C); colorNames["cyan"] = new Array(0x00, 0xFF, 0xFF); colorNames["darkblue"] = new Array(0x00, 0x00, 0x8B); colorNames["darkcyan"] = new Array(0x00, 0x8B, 0x8B); colorNames["darkgoldenrod"] = new Array(0xB8, 0x86, 0x0B); colorNames["darkgray"] = new Array(0xA9, 0xA9, 0xA9); colorNames["darkgreen"] = new Array(0x00, 0x64, 0x00); colorNames["darkkhaki"] = new Array(0xBD, 0xB7, 0x6B); colorNames["darkmagenta"] = new Array(0x8B, 0x00, 0x8B); colorNames["darkolivegreen"] = new Array(0x55, 0x6B, 0x2F); colorNames["darkorange"] = new Array(0xFF, 0x8C, 0x00); colorNames["darkorchid"] = new Array(0x99, 0x32, 0xCC); colorNames["darkred"] = new Array(0x8B, 0x00, 0x00); colorNames["darksalmon"] = new Array(0xE9, 0x96, 0x7A); colorNames["darkseagreen"] = new Array(0x8F, 0xBC, 0x8F); colorNames["darkslateblue"] = new Array(0x48, 0x3D, 0x8B); colorNames["darkslategray"] = new Array(0x2F, 0x4F, 0x4F); colorNames["darkturquoise"] = new Array(0x00, 0xCE, 0xD1); colorNames["darkviolet"] = new Array(0x94, 0x00, 0xD3); colorNames["deeppink"] = new Array(0xFF, 0x14, 0x93); colorNames["deepskyblue"] = new Array(0x00, 0xBF, 0xFF); colorNames["dimgray"] = new Array(0x69, 0x69, 0x69); colorNames["dodgerblue"] = new Array(0x1E, 0x90, 0xFF); colorNames["firebrick"] = new Array(0xB2, 0x22, 0x22); colorNames["floralwhite"] = new Array(0xFF, 0xFA, 0xF0); colorNames["forestgreen"] = new Array(0x22, 0x8B, 0x22); colorNames["fuchsia"] = new Array(0xFF, 0x00, 0xFF); colorNames["gainsboro"] = new Array(0xDC, 0xDC, 0xDC); colorNames["ghostwhite"] = new Array(0xF8, 0xF8, 0xFF); colorNames["gold"] = new Array(0xFF, 0xD7, 0x00); colorNames["goldenrod"] = new Array(0xDA, 0xA5, 0x20); colorNames["gray"] = new Array(0x80, 0x80, 0x80); colorNames["green"] = new Array(0x00, 0x80, 0x00); colorNames["greenyellow"] = new Array(0xAD, 0xFF, 0x2F); colorNames["honeydew"] = new Array(0xF0, 0xFF, 0xF0); colorNames["hotpink"] = new Array(0xFF, 0x69, 0xB4); colorNames["indianred"] = new Array(0xCD, 0x5C, 0x5C); colorNames["indigo"] = new Array(0x4B, 0x00, 0x82); colorNames["ivory"] = new Array(0xFF, 0xFF, 0xF0); colorNames["khaki"] = new Array(0xF0, 0xE6, 0x8C); colorNames["lavender"] = new Array(0xE6, 0xE6, 0xFA); colorNames["lavenderblush"] = new Array(0xFF, 0xF0, 0xF5); colorNames["lawngreen"] = new Array(0x7C, 0xFC, 0x00); colorNames["lemonchiffon"] = new Array(0xFF, 0xFA, 0xCD); colorNames["lightblue"] = new Array(0xAD, 0xD8, 0xE6); colorNames["lightcoral"] = new Array(0xF0, 0x80, 0x80); colorNames["lightcyan"] = new Array(0xE0, 0xFF, 0xFF); colorNames["lightgoldenrodyellow"] = new Array(0xFA, 0xFA, 0xD2); colorNames["lightgreen"] = new Array(0x90, 0xEE, 0x90); colorNames["lightgrey"] = new Array(0xD3, 0xD3, 0xD3); colorNames["lightpink"] = new Array(0xFF, 0xB6, 0xC1); colorNames["lightsalmon"] = new Array(0xFF, 0xA0, 0x7A); colorNames["lightseagreen"] = new Array(0x20, 0xB2, 0xAA); colorNames["lightskyblue"] = new Array(0x87, 0xCE, 0xFA); colorNames["lightslategray"] = new Array(0x77, 0x88, 0x99); colorNames["lightsteelblue"] = new Array(0xB0, 0xC4, 0xDE); colorNames["lightyellow"] = new Array(0xFF, 0xFF, 0xE0); colorNames["lime"] = new Array(0x00, 0xFF, 0x00); colorNames["limegreen"] = new Array(0x32, 0xCD, 0x32); colorNames["linen"] = new Array(0xFA, 0xF0, 0xE6); colorNames["magenta"] = new Array(0xFF, 0x00, 0xFF); colorNames["maroon"] = new Array(0x80, 0x00, 0x00); colorNames["mediumaquamarine"] = new Array(0x66, 0xCD, 0xAA); colorNames["mediumblue"] = new Array(0x00, 0x00, 0xCD); colorNames["mediumorchid"] = new Array(0xBA, 0x55, 0xD3); colorNames["mediumpurple"] = new Array(0x93, 0x70, 0xDB); colorNames["mediumseagreen"] = new Array(0x3C, 0xB3, 0x71); colorNames["mediumslateblue"] = new Array(0x7B, 0x68, 0xEE); colorNames["mediumspringgreen"] = new Array(0x00, 0xFA, 0x9A); colorNames["mediumturquoise"] = new Array(0x48, 0xD1, 0xCC); colorNames["mediumvioletred"] = new Array(0xC7, 0x15, 0x85); colorNames["midnightblue"] = new Array(0x19, 0x19, 0x70); colorNames["mintcream"] = new Array(0xF5, 0xFF, 0xFA); colorNames["mistyrose"] = new Array(0xFF, 0xE4, 0xE1); colorNames["moccasin"] = new Array(0xFF, 0xE4, 0xB5); colorNames["navajowhite"] = new Array(0xFF, 0xDE, 0xAD); colorNames["navy"] = new Array(0x00, 0x00, 0x80); colorNames["oldlace"] = new Array(0xFD, 0xF5, 0xE6); colorNames["olive"] = new Array(0x80, 0x80, 0x00); colorNames["olivedrab"] = new Array(0x6B, 0x8E, 0x23); colorNames["orange"] = new Array(0xFF, 0xA5, 0x00); colorNames["orangered"] = new Array(0xFF, 0x45, 0x00); colorNames["orchid"] = new Array(0xDA, 0x70, 0xD6); colorNames["palegoldenrod"] = new Array(0xEE, 0xE8, 0xAA); colorNames["palegreen"] = new Array(0x98, 0xFB, 0x98); colorNames["paleturquoise"] = new Array(0xAF, 0xEE, 0xEE); colorNames["palevioletred"] = new Array(0xDB, 0x70, 0x93); colorNames["papayawhip"] = new Array(0xFF, 0xEF, 0xD5); colorNames["peachpuff"] = new Array(0xFF, 0xDA, 0xB9); colorNames["peru"] = new Array(0xCD, 0x85, 0x3F); colorNames["pink"] = new Array(0xFF, 0xC0, 0xCB); colorNames["plum"] = new Array(0xDD, 0xA0, 0xDD); colorNames["powderblue"] = new Array(0xB0, 0xE0, 0xE6); colorNames["purple"] = new Array(0x80, 0x00, 0x80); colorNames["red"] = new Array(0xFF, 0x00, 0x00); colorNames["rosybrown"] = new Array(0xBC, 0x8F, 0x8F); colorNames["royalblue"] = new Array(0x41, 0x69, 0xE1); colorNames["saddlebrown"] = new Array(0x8B, 0x45, 0x13); colorNames["salmon"] = new Array(0xFA, 0x80, 0x72); colorNames["sandybrown"] = new Array(0xF4, 0xA4, 0x60); colorNames["seagreen"] = new Array(0x2E, 0x8B, 0x57); colorNames["seashell"] = new Array(0xFF, 0xF5, 0xEE); colorNames["sienna"] = new Array(0xA0, 0x52, 0x2D); colorNames["silver"] = new Array(0xC0, 0xC0, 0xC0); colorNames["skyblue"] = new Array(0x87, 0xCE, 0xEB); colorNames["slateblue"] = new Array(0x6A, 0x5A, 0xCD); colorNames["slategray"] = new Array(0x70, 0x80, 0x90); colorNames["snow"] = new Array(0xFF, 0xFA, 0xFA); colorNames["springgreen"] = new Array(0x00, 0xFF, 0x7F); colorNames["steelblue"] = new Array(0x46, 0x82, 0xB4); colorNames["tan"] = new Array(0xD2, 0xB4, 0x8C); colorNames["teal"] = new Array(0x00, 0x80, 0x80); colorNames["thistle"] = new Array(0xD8, 0xBF, 0xD8); colorNames["tomato"] = new Array(0xFF, 0x63, 0x47); colorNames["turquoise"] = new Array(0x40, 0xE0, 0xD0); colorNames["violet"] = new Array(0xEE, 0x82, 0xEE); colorNames["wheat"] = new Array(0xF5, 0xDE, 0xB3); colorNames["white"] = new Array(0xFF, 0xFF, 0xFF); colorNames["whitesmoke"] = new Array(0xF5, 0xF5, 0xF5); colorNames["yellow"] = new Array(0xFF, 0xFF, 0x00); colorNames["yellowgreen"] = new Array(0x9A, 0xCD, 0x32); // RGB16進法→色名(配列で戻って来ます) // getColorName("#fce622") → new Array("gold","#FFD700") function getColorName(intR, intG, intB){ var diff = Number.MAX_VALUE; var tmp = "" for(var i in colorNames){ var codeR = colorNames[i][0] var codeG = colorNames[i][1] var codeB = colorNames[i][2] //偏差の二乗の和 var def = (Math.pow(intR-codeR, 2) + Math.pow(intG-codeG, 2) + Math.pow(intB-codeB, 2)) if(def < diff){ diff = def tmp = i } } return (new Array(tmp, colorNames[tmp])) } //--> </SCRIPT>
説明
RGB16進法からそれにもっとも近い色名を調べ、名前とRGBコードを返します。 このようにいくつもの値の中からある値に一番近いものを調べる場合は通常、値と値との差(数学用語で偏差)を調べて、 その絶対値が一番小さなものを最も近い値とします。 ただし、この場合はRGB三つの値を比べる必要があります。そういう場合は偏差を二乗し、その和が最も小さいものを 一番近い値とすればいいのです。
- [BACK] -
|
AUTO
M
OBILES
|
D
OWNLOADS
|
L
INK
|
B
BS
|
A
BOUT
|
F
EEDBACK
Copyright © 1999-2005 By よーすけ
mailto:<
web@@@write-off.cside.com
>