- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种算法/方法来使用 Python 将给定的 HEX(例如 #111111 R:0x11、G:0x11、B:0x11)转换为最接近的 X11 颜色编号(终端为 88 或 256 色) 、PHP 或 VIM 脚本,我想知道这里是否有人知道方法或为我指明了执行此操作的方向。
提前致谢。
最佳答案
我有同样的问题(采用现有的 vim colorscheme 和 gvim 十六进制颜色并填充终端颜色值)。这是我使用的脚本(尽管 ColorDist 函数可能会像其他一些海报所建议的那样受益于更好的颜色距离度量)
import re
import math
colors = {
'000000': '16', '00005f': '17', '000087': '18', '0000af': '19', '0000d7': '20',
'0000ff': '21', '005f00': '22', '005f5f': '23', '005f87': '24', '005faf': '25',
'005fd7': '26', '005fff': '27', '008700': '28', '00875f': '29', '008787': '30',
'0087af': '31', '0087d7': '32', '0087ff': '33', '00af00': '34', '00af5f': '35',
'00af87': '36', '00afaf': '37', '00afd7': '38', '00afff': '39', '00d700': '40',
'00d75f': '41', '00d787': '42', '00d7af': '43', '00d7d7': '44', '00d7ff': '45',
'00ff00': '46', '00ff5f': '47', '00ff87': '48', '00ffaf': '49', '00ffd7': '50',
'00ffff': '51', '5f0000': '52', '5f005f': '53', '5f0087': '54', '5f00af': '55',
'5f00d7': '56', '5f00ff': '57', '5f5f00': '58', '5f5f5f': '59', '5f5f87': '60',
'5f5faf': '61', '5f5fd7': '62', '5f5fff': '63', '5f8700': '64', '5f875f': '65',
'5f8787': '66', '5f87af': '67', '5f87d7': '68', '5f87ff': '69', '5faf00': '70',
'5faf5f': '71', '5faf87': '72', '5fafaf': '73', '5fafd7': '74', '5fafff': '75',
'5fd700': '76', '5fd75f': '77', '5fd787': '78', '5fd7af': '79', '5fd7d7': '80',
'5fd7ff': '81', '5fff00': '82', '5fff5f': '83', '5fff87': '84', '5fffaf': '85',
'5fffd7': '86', '5fffff': '87', '870000': '88', '87005f': '89', '870087': '90',
'8700af': '91', '8700d7': '92', '8700ff': '93', '875f00': '94', '875f5f': '95',
'875f87': '96', '875faf': '97', '875fd7': '98', '875fff': '99', '878700': '100',
'87875f': '101', '878787': '102', '8787af': '103', '8787d7': '104', '8787ff': '105',
'87af00': '106', '87af5f': '107', '87af87': '108', '87afaf': '109', '87afd7': '110',
'87afff': '111', '87d700': '112', '87d75f': '113', '87d787': '114', '87d7af': '115',
'87d7d7': '116', '87d7ff': '117', '87ff00': '118', '87ff5f': '119', '87ff87': '120',
'87ffaf': '121', '87ffd7': '122', '87ffff': '123', 'af0000': '124', 'af005f': '125',
'af0087': '126', 'af00af': '127', 'af00d7': '128', 'af00ff': '129', 'af5f00': '130',
'af5f5f': '131', 'af5f87': '132', 'af5faf': '133', 'af5fd7': '134', 'af5fff': '135',
'af8700': '136', 'af875f': '137', 'af8787': '138', 'af87af': '139', 'af87d7': '140',
'af87ff': '141', 'afaf00': '142', 'afaf5f': '143', 'afaf87': '144', 'afafaf': '145',
'afafd7': '146', 'afafff': '147', 'afd700': '148', 'afd75f': '149', 'afd787': '150',
'afd7af': '151', 'afd7d7': '152', 'afd7ff': '153', 'afff00': '154', 'afff5f': '155',
'afff87': '156', 'afffaf': '157', 'afffd7': '158', 'afffff': '159', 'd70000': '160',
'd7005f': '161', 'd70087': '162', 'd700af': '163', 'd700d7': '164', 'd700ff': '165',
'd75f00': '166', 'd75f5f': '167', 'd75f87': '168', 'd75faf': '169', 'd75fd7': '170',
'd75fff': '171', 'd78700': '172', 'd7875f': '173', 'd78787': '174', 'd787af': '175',
'd787d7': '176', 'd787ff': '177', 'd7af00': '178', 'd7af5f': '179', 'd7af87': '180',
'd7afaf': '181', 'd7afd7': '182', 'd7afff': '183', 'd7d700': '184', 'd7d75f': '185',
'd7d787': '186', 'd7d7af': '187', 'd7d7d7': '188', 'd7d7ff': '189', 'd7ff00': '190',
'd7ff5f': '191', 'd7ff87': '192', 'd7ffaf': '193', 'd7ffd7': '194', 'd7ffff': '195',
'ff0000': '196', 'ff005f': '197', 'ff0087': '198', 'ff00af': '199', 'ff00d7': '200',
'ff00ff': '201', 'ff5f00': '202', 'ff5f5f': '203', 'ff5f87': '204', 'ff5faf': '205',
'ff5fd7': '206', 'ff5fff': '207', 'ff8700': '208', 'ff875f': '209', 'ff8787': '210',
'ff87af': '211', 'ff87d7': '212', 'ff87ff': '213', 'ffaf00': '214', 'ffaf5f': '215',
'ffaf87': '216', 'ffafaf': '217', 'ffafd7': '218', 'ffafff': '219', 'ffd700': '220',
'ffd75f': '221', 'ffd787': '222', 'ffd7af': '223', 'ffd7d7': '224', 'ffd7ff': '225',
'ffff00': '226', 'ffff5f': '227', 'ffff87': '228', 'ffffaf': '229', 'ffffd7': '230',
'ffffff': '231', '080808': '232', '121212': '233', '1c1c1c': '234', '262626': '235',
'303030': '236', '3a3a3a': '237', '444444': '238', '4e4e4e': '239', '585858': '240',
'626262': '241', '6c6c6c': '242', '767676': '243', '808080': '244', '8a8a8a': '245',
'949494': '246', '9e9e9e': '247', 'a8a8a8': '248', 'b2b2b2': '249', 'bcbcbc': '250',
'c6c6c6': '251', 'd0d0d0': '252', 'dadada': '253', 'e4e4e4': '254', 'eeeeee': '255',
}
## Example line from a vim colorscheme file
##hi Normal ctermfg=NONE ctermbg=NONE gui=NONE guifg=#b7af9f guibg=#202020
def Decompose(hexval):
return float(int(hexval[0:2], 16)), float(int(hexval[2:4], 16)), float(int(hexval[4:6], 16))
def Normalize(r, g, b):
magsqr = r*r + g*g + b*b
if magsqr < 0.0001:
return 0.0, 0.0, 0.0
n = 1.0 / math.sqrt(magsqr)
return r*n, g*n, b*n
def ColorDist(c1, c2):
c1r, c1g, c1b = Decompose(c1)
c2r, c2g, c2b = Decompose(c2)
dr = c1r - c2r
dg = c1g - c2g
db = c1b - c2b
return dr*dr + dg*dg + db*db
def BestMatch(hexval):
best = None
bestdist = 0.0
for key in colors.keys():
dist = ColorDist(hexval, key)
if best is None or dist < bestdist:
best = colors[key]
bestdist = dist
return best
## 1 2 3 4 5 6
fg = re.compile(r'^(.*)(ctermfg=)NONE(.*)(guifg=#)([^ ]*)(.*)\n$')
bg = re.compile(r'^(.*)(ctermbg=)NONE(.*)(guibg=#)([^ ]*)(.*)\n$')
with open(r'input_color_scheme.vim', 'r') as f:
with open(r'output_color_scheme.vim', 'w') as fout:
for line in f.readlines():
fgmatch = fg.match(line)
if fgmatch is not None:
line = (fgmatch.group(1) +
fgmatch.group(2) +
BestMatch(fgmatch.group(5)) +
fgmatch.group(3) +
fgmatch.group(4) +
fgmatch.group(5) +
fgmatch.group(6)) + '\n'
bgmatch = bg.match(line)
if bgmatch is not None:
line = (bgmatch.group(1) +
bgmatch.group(2) +
BestMatch(bgmatch.group(5)) +
bgmatch.group(3) +
bgmatch.group(4) +
bgmatch.group(5) +
bgmatch.group(6) + '\n')
## -- print the line
fout.write(line)
关于algorithm - 将 HEX 转换为最接近的 X11 色号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765623/
我在业余时间慢慢学习javascript,但还没有完全掌握这一点。但一位 friend 要求我制作一个简单的机器人,它可以向每个加入服务器的新用户发送私信,询问他们希望用户名的颜色是什么,并将他们添加
抱歉,标题令人困惑,我会澄清一下。我正在尝试让机器人检查用户是否在他们的 quick.db 库存中具有特定 Angular 色,如果有,它就会装备该 Angular 色。我遇到的问题是,即使在 lis
所以我想做一个小的用户配置文件,但我希望它打印出用户 Angular 色。可能吗? case "Profile": var embed = new Discord.RichEmbed()
我有一个表单,其中包含三个不同的 data-role="page" 和三个不同的 data-url="abc"。 根据某些条件,单击第一页上的按钮后,我将在第二页上渲染/显示某些字段。 现在我正在获取
我有一行不和谐机器人的代码,用于删除特定的命名 Angular 色并添加一个名为“静音”的 Angular 色一段特定的时间。基本上,服务器只能有 3 个 Angular 色,一个可以发出命令,一个具
我想在编写函数时在编辑页面上显示文本的标题。 应用程序.html {{ text }} 应用程序.ts getRoleEdit
如果 s 是一个系列,我在运行以下命令时会收到一条错误消息: s.plot(style='k--', color='b') 错误消息说 [b] 不是可识别的颜色。 我正在使用 Pandas 0.11。
这是一个 fiddle http://jsfiddle.net/aLr2yx8d/ $('#inputButton').click(function() { var value = $(
所以,基本上。我想做的是创建一个单词解密器,您可以在其中输入一个打乱的单词并对其进行解密。它工作得很好,尽管我单独检查每个字符,但由于某种原因,额外的字符漏掉了。 我输入“olehl (hello)”
在尝试console.log字符串时,我遇到了一个相当烦人的问题。我将字符串 2^{\\frac{1}{2}}x=1 存储在 Node.js 数据库中,但输出时给出 2^{rac{1}{2 }}x=1
我想创建一个命令来查找用户在服务器中拥有的最高 Angular 色。 我已经知道Python中有一个discord.user.top_role。是否有相当于该功能的 Javascript? 我尝试将此
我对 Node.js 相当陌生,目前正在开发一个 Discord 机器人。我试图让我的机器人根据用户传递的参数分配服务器 Angular 色。我知道我可以找到特定 Angular 色的名称,然后根据他
我一直在尝试创建一个简单的命令,为在聊天中说话的人提供一个 Angular 色,假设他们说了一句脏话,它会给 message.author 静音 Angular 色。 client.on("messa
如何使用expressjs和passport在nodejs中实现基于 Angular 色的授权/访问控制以及如何完美设计 Angular 色中间件? 我有两种登录类型管理员和用户 以管理员和用户的名义
我在这里有一个键盘可访问的自定义下拉组件:https://codesandbox.io/s/31440w1vo6 但是,当我打开 NVDA 或 JAWS 时,激活“选择等位基因”后焦点不会再移动到选项
我正在为我的机器人创建 Angular 色分配命令,因此用户可以输入 h.addrole @user @role 我正在尝试执行此命令,如果用户拥有该 Angular 色,它会输出说 此用户已经拥有此
我想从数据库中获取用户的 Angular 色(组织或个人)。我有一个名为“Users”的表,另一个名为“Role_users”的表,其中有 user_id 和 role_id(1 代表个人,100 代
我有一个在 Vuejs 项目中导出一些函数的文件,我还需要在外部环境中使用它们..在 Component 中我知道我要使用哪个函数应该通过名称识别并与 .JSON 文件进行比较来使用,这在开发环境中很
我想将用户添加到我的 Parse.Role 但它不起作用。我看了很多例子,它们看起来都很简单,但我无法正确理解。这是我的代码: Parse.Cloud.define("activateVendor",
我克隆了一个 https://github.com/beeman/loopback-angular-admin我已经使用环回资源管理器创建了几个新 Angular 色,但是如何为我创建的用户分配 An
我是一名优秀的程序员,十分优秀!