如何将字符串颜色转换为其十六进制代码或 RGB 值?
Posted
技术标签:
【中文标题】如何将字符串颜色转换为其十六进制代码或 RGB 值?【英文标题】:How to convert a string color to its hex code or RGB value? 【发布时间】:2011-02-02 22:59:54 【问题描述】:我不确定它是否可能,但我想创建某种函数,您可以在其中传入一个字符串,例如“yellow”或“green”,它会返回其十六进制代码或绿色或绿色的十六进制代码范围黄色适合。
这在 php 中可行吗?如果不可能,我愿意尝试任何其他可以做到这一点的方法!
谢谢大家
【问题讨论】:
如果您有一个包含所有这些颜色的数据库,则可以在 PHP 中使用。所以,你只需要把那个数据库放在某个地方 您可能想使用the 16 basic colours defined in the html standard。 您可以在此站点上找到所有颜色名称及其十六进制值:iconbazaar.com/color_tables/lepihce.html 使用一些正则表达式应该可以使用它来构建任何类型的“数据库”。编辑:answers.oreilly.com/topic/… 也是一个不错的列表,似乎更容易导入到例如。 csv. 我认为最简单的解决方案是为您计划作为输入的颜色构建自己的查找表。还允许十六进制颜色代码作为输入将允许用户输入他们想要的任何颜色。 【参考方案1】:据我所知,无法将 HTML color names 或 CSS color names 转换为 PHP 中的 Hex 或 RGB 值。您必须创建一个知道名称的地图(请参阅 Wiki 文章)。
已经有人为你完成了这项工作:
http://psoug.org/snippet/CSS_Colornames_to_RGB_values_415.htm摘录:
$Colors = ARRAY(
"black"=>array( "red"=>0x00, "green"=>0x00, "blue"=>0x00),
"maroon"=>array( "red"=>0x80, "green"=>0x00, "blue"=>0x00),
// ...
// more colors inbetween
// ...
"wheat"=>array( "red"=>0xF5, "green"=>0xDE, "blue"=>0xB3),
"whitesmoke"=>array( "red"=>0xF5, "green"=>0xF5, "blue"=>0xF5),
"yellowgreen"=>array( "red"=>0x9A, "green"=>0xCD, "blue"=>0x32)
);
然后通过$maroon = $Colors['maroon'];
简单地获取RGB值
进一步参考:
http://www.w3.org/TR/css3-color/#html4 http://www.crockford.com/wrrrld/color.html【讨论】:
哇,太棒了!只需要将它包裹在另一个 rgb 到 hex 转换器功能!...或者直接使用它! 如果有人需要这个功能,第一个贡献者 (Halit YEL) 在 php.net 网站上写了一个很棒的 rgb to hex 功能:php.net/manual/en/function.hexdec.php 链接已损坏。请参阅下面的答案以获取解决方案。【参考方案2】:这个怎么样?
function color2hex ($nm)
preg_match_all ("/\d1,3/", (new ImagickPixel ($nm))->getColorAsString (), $matches);
[$r, $g, $b] = $matches[0];
return sprintf ("#%06X", $r * 65536 + $g * 256 + $b);
【讨论】:
【参考方案3】: // 将 html 颜色名称转换为十六进制颜色值 // 如果输入的不是颜色名称,则返回原值 // http://wpCodeSnippets.info 函数颜色名称到十六进制($颜色名称) // 标准的 147 HTML 颜色名称 $颜色 = 数组( '爱丽丝蓝'=>'F0F8FF', '古董白'=>'FAEBD7', '水色'=>'00FFFF', '海蓝宝石'=>'7FFFD4', '天蓝色'=>'F0FFFF', '米色'=>'F5F5DC', 'bisque'=>'FFE4C4', '黑色'=>'000000', 'blanchedalmond'=>'FFEBCD', '蓝色'=>'0000FF', '蓝紫'=>'8A2BE2', '棕色'=>'A52A2A', 'burlywood'=>'DEB887', 'cadetblue'=>'5F9EA0', 'chartreuse'=>'7FFF00', '巧克力'=>'D2691E', '珊瑚'=>'FF7F50', '矢车菊蓝'=>'6495ED', '玉米丝'=>'FFF8DC', '深红色'=>'DC143C', '青色'=>'00FFFF', '深蓝'=>'00008B', '深青色'=>'008B8B', 'darkoldenrod'=>'B8860B', '深灰色'=>'A9A9A9', '深绿色'=>'006400', '深灰色'=>'A9A9A9', '黑卡其色'=>'BDB76B', 'darkagenta'=>'8B008B', 'darkolivegreen'=>'556B2F', 'darkorange'=>'FF8C00', 'darkorchid'=>'9932CC', '暗红色'=>'8B0000', 'darksalmon'=>'E9967A', 'darkseagreen'=>'8FBC8F', 'darkslateblue'=>'483D8B', 'darkslategray'=>'2F4F4F', 'darkslategrey'=>'2F4F4F', 'darkturquoise'=>'00CED1', '暗紫'=>'9400D3', '深粉色'=>'FF1493', '深天蓝'=>'00BFFF', 'dimgray'=>'696969', 'dimgrey'=>'696969', 'dodgerblue'=>'1E90FF', '耐火砖'=>'B22222', 'floralwhite'=>'FFFAF0', '森林绿'=>'228B22', '紫红色'=>'FF00FF', 'gainsboro'=>'DCDCDC', '鬼白'=>'F8F8FF', '金'=>'FFD700', '金棒'=>'DAA520', '灰色'=>'808080', '绿色'=>'008000', 'greenyellow'=>'ADFF2F', '灰色'=>'808080', '蜜露'=>'F0FFF0', 'hotpink'=>'FF69B4', '印度红'=>'CD5C5C', '靛蓝'=>'4B0082', '象牙'=>'FFFFF0', '卡其色'=>'F0E68C', '薰衣草'=>'E6E6FA', 'lavenderblush'=>'FFF0F5', '草坪'=>'7CFC00', '柠檬雪纺'=>'FFFACD', '淡蓝色'=>'ADD8E6', '光珊瑚'=>'F08080', '浅青色'=>'E0FFFF', 'lightgoldenrodyellow'=>'FAFAD2', '浅灰色'=>'D3D3D3', '浅绿色'=>'90EE90', 'lightgrey'=>'D3D3D3', 'lightpink'=>'FFB6C1', 'lightsalmon'=>'FFA07A', 'lightseagreen'=>'20B2AA', 'lightskyblue'=>'87CEFA', 'lightslategray'=>'778899', 'lightslategrey'=>'778899', 'lightsteelblue'=>'B0C4DE', '淡黄色'=>'FFFFE0', '石灰'=>'00FF00', '石灰绿'=>'32CD32', '亚麻'=>'FAF0E6', '洋红色'=>'FF00FF', '栗色'=>'800000', '中海蓝宝石'=>'66CDAA', '中蓝'=>'0000CD', 'mediumorchid'=>'BA55D3', '中等紫色'=>'9370D0', 'mediumseagreen'=>'3CB371', 'mediumslateblue'=>'7B68EE', 'mediumspringgreen'=>'00FA9A', '中绿松石'=>'48D1CC', '中紫罗兰色'=>'C71585', '午夜蓝'=>'191970', '薄荷奶油'=>'F5FFFA', '迷雾'=>'FFE4E1', '莫卡辛'=>'FFE4B5', '纳瓦霍白'=>'FFDEAD', '海军'=>'000080', 'oldlace'=>'FDF5E6', '橄榄'=>'808000', 'olivedrab'=>'6B8E23', '橙色'=>'FFA500', '橙色'=>'FF4500', '兰花'=>'DA70D6', 'palegoldenrod'=>'EEE8AA', '苍白'=>'98FB98', 'paleturquoise'=>'AFEEEE', 'palevioletred'=>'DB7093', '番木瓜'=>'FFEFD5', '桃子'=>'FFDAB9', '秘鲁'=>'CD853F', '粉红色'=>'FFC0CB', '李子'=>'DDA0DD', '粉蓝'=>'B0E0E6', '紫色'=>'800080', '红色'=>'FF0000', '玫瑰色'=>'BC8F8F', '宝蓝'=>'4169E1', '马鞍棕色'=>'8B4513', '三文鱼'=>'FA8072', 'sandybrown'=>'F4A460', '海绿'=>'2E8B57', '贝壳'=>'FFF5EE', '西耶娜'=>'A0522D', '银'=>'C0C0C0', '天蓝'=>'87CEEB', 'slateblue'=>'6A5ACD', 'slategray'=>'708090', 'slategrey'=>'708090', '雪'=>'FFFAFA', 'springgreen'=>'00FF7F', '钢蓝'=>'4682B4', '棕褐色'=>'D2B48C', '蓝绿色'=>'008080', '蓟'=>'D8BFD8', '番茄'=>'FF6347', '绿松石'=>'40E0D0', '紫罗兰'=>'EE82EE', '小麦'=>'F5DEB3', '白色'=>'FFFFFF', '白烟'=>'F5F5F5', '黄色'=>'FFFF00', '黄绿色'=>'9ACD32'); $color_name = strtolower($color_name); if (isset($colors[$color_name])) return ('#' . $colors[$color_name]); 别的 返回($颜色名称);【讨论】:
感谢您发布这个方便的列表/功能。以上是关于如何将字符串颜色转换为其十六进制代码或 RGB 值?的主要内容,如果未能解决你的问题,请参考以下文章