gpt4 book ai didi

ruby - 从用户名生成 rgb 颜色(以可重复的方式)

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:10 25 4
gpt4 key购买 nike

我想根据以下规则为用户的默认头像背景设置一致的颜色:

  • rgb值,其中每个数字不能大于200(即0到200之间)
  • 使用全名,例如“John Smith”和“John Smithy”会给出不同的颜色。
  • 对名称稍作改动就会产生完全不同的颜色。

我正在考虑这些方面的事情:

  • 将名字散列成由三个相等部分组成的东西
  • 取三个部分中的每一个并将其标准化为介于 0 和 1 之间的 float
  • 将这些值乘以 200 得到 r、g 或 b 值。

但我不太清楚该怎么做。有什么建议么?如果我能在不获得任何额外 gem 的情况下做到这一点,那将是理想的。我已经将 MD5 用于一些哈希运算。

注意:这不是安全问题,只是有点好玩,所以如果两个不同的名称偶尔会生成相同的颜色,这无关紧要,但通常最好颜色值尽可能不同。

最佳答案

您可以通过以下方式构建用户名的 MD5 哈希:

require 'digest'

name = 'foo'
digest = Digest::MD5.digest(name)
#=> "\xAC\xBD\x18\xDBL\xC2\xF8\\\xED\xEFeO\xCC\xC4\xA4\xD8"

提取前三个 16 位整数:

values = digest.unpack('SSS')
#=> [48556, 56088, 49740]

并将这些 0..65535 值映射到 0..200:

values.map { |i| i * 201 / 0x10000 }
#=> [148, 172, 152]

关于ruby - 从用户名生成 rgb 颜色(以可重复的方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com