【发布时间】:2019-05-23 20:13:28
【问题描述】:
所以,我正在使用 Javascript 创建一个图形化的 Bash PS1 生成器。用户可以从调色板(jscolor 库)中为他们想要的任何元素选择任何颜色。我得到的值是该颜色的 RGB 表示。我想将该值转换为 0-255 之间的数字,以便它可以在 Bash 中表示。
例子:
输入:#000000
输出:0
输入:#FFFFFF
输出:255
任何其他输入转换为最接近的 8 位表示
**我检查了这个post,但答案不是很有效(我得到输出 215 用于输入#FFFFFF)。
【问题讨论】:
-
您将遇到的问题是您将“丢失”一些颜色,并且没有一个很好的方法可以均匀地“丢失”它们。如果您将每个 8 位颜色分量值压缩为 3 位,您仍然必须丢弃其中一个(红色、绿色或蓝色)以适合 8 位。如果将它们压缩为 2 位,则可以“保持”色彩平衡,但色彩分辨率会相当“颗粒感”。
-
@mojo 在你看来,我应该给用户有限的颜色选项(红色、绿色、蓝色、灰色等)吗?
-
这取决于你想用这些颜色做什么。有几种处理颜色的方法。例如,GIF 使用 8 位值作为对 24 位颜色值的引用。任何 GIF 中只能有 256 种独特的颜色,但它们可以是 1600 万种 24 位颜色中的任何一种。