【问题标题】:what's the max range for colors in this format: #AABBCC?这种格式的颜色的最大范围是多少:#AABBCC?
【发布时间】:2011-04-29 08:18:27
【问题描述】:

如何将颜色从 (N, N, N) 格式转换为 #AABBCC(和 #AAABBBCCC)?

谢谢

【问题讨论】:

  • 您是指颜色的基本十六进制值吗?其中AA = 红色、BB=绿色和CC=蓝色,范围从00FF? (0-255)
  • @Slokun 是的.. 我的问题是我不知道如何在格式之间转换.. 从 (0,1,0) 到 #00FF00 到 (000, 256, 000)。 (使用 Python)
  • @Patrick - 那么你应该改写你的问题。你没有提到转换或 Python。
  • @Ryan Emerle 我想最好再创建一个新问题

标签: python colors


【解决方案1】:

#FFFFFF,就这么简单

每个字符都有0..F 范围。那是0..15。所以两个字符是0..(16*16-1) -> 0-255

要在格式之间进行转换,只需考虑:

#AABBCC 是三个值AA BB CC。每一个值代表一个通道(红、绿、蓝),可以从0255 或从0FF 或从0.01.0

如果你有例如 #123456 你可以这样做

12 -> 1*16 + 2 = .. (result in range 0-255)
34 -> 3*16 + 4 = ..
56 -> 5*16 + 6 = ..

一般来说,由XY组成的两位十六进制数可以通过将X乘以16并加上Y转换为十进制值,注意转换超过9的数字(A,B,C , D, E, F) 到他们的对应对象 (10, 11, 12, 13, 14, 15)。因此,例如 AC 将是 A*16 + C = 10*16 + 12

(准确地说,一个 n 位十六进制数是通过将第 i 个数字从右边乘以 16^i 并将它们全部加在一起来转换的)

【讨论】:

  • 第二行,我想你的意思是0-150-(16*16-1) -> 0-255
  • 是的,对不起,让我解决这个问题.. 否则会误导:)
【解决方案2】:

从 00 到 FF。 0 到 255 的十六进制数。

【讨论】:

  • 对不起..我的问题是我不知道如何在格式之间转换..从 (0,1,0) 到 #00FF00 到 (000, 256, 000) (使用 Python)
  • 不用担心,但请尝试更好地表达这个问题和未来的问题:-)
【解决方案3】:
 RRGGBB    RRGGBB
#000000 - #FFFFFF
 Black  -  White

RR = 00 - FF or 0 - 255
GG = 00 - FF or 0 - 255
BB = 00 - FF or 0 - 255

【讨论】:

  • OK...我的问题是我不知道如何在格式之间进行转换..从 (0,1,0) 到 #00FF00 到 (000, 256, 000) (使用 Python )
  • @Patrick:首先将值 0..1 转换为 0..255,然后将其转换为十六进制。第一部分很简单,只需将值乘以 255(或 0xFF)。有多种方法可以转换为十六进制。您可以使用字符串插值(% 运算符)、内置的hex() 函数或查找表。查看人们(包括我自己)针对您的问题发布的各种答案。
【解决方案4】:

这些是红色绿色和蓝色通道的 16 位数字的十六进制表示。所以每个通道为 0 到 255。 FF(十六进制)等于十进制的 255。

【讨论】:

    【解决方案5】:

    正如其他人所说,00-FF

    以下是十六进制表示法的 HTML 颜色概览:
    http://www.w3schools.com/Html/html_colors.asp

    您可以在此处了解如何将十六进制转换为十进制:
    http://en.wikipedia.org/wiki/Hexadecimal

    对于 Python:
    Converting hex color to RGB and vice-versa

    或搜索“转换十六进制十进制

    【讨论】:

      【解决方案6】:

      使用 Python?试试这个:

      c = (0., 1., 0.)
      rgb = '#%02X%02X%02X' % (c[0] * 255, c[1] * 255, c[2] * 255)
      

      【讨论】:

        【解决方案7】:

        这是十六进制(以 16 为基数)表示法,其中每个数字从 0 到 15 (F)。

        十六进制的0到FF的范围是十进制的0到255。

        如果您想从一个转换为另一个,有很多网站可以为您做到这一点 - 例如 this one

        【讨论】:

        • F 等价于 15,而不是 16。
        【解决方案8】:

        #AABBCC 格式的颜色的最小值和最大值为 #000000...#FFFFFF,或十进制的 0...16777215。每个单独的颜色分量范围从#00..#FF,十进制为 0..255,需要 8 位或 1 个字节的存储空间。对于 #AAABBBCCC,组件的范围是 #000-#FFF 或 0..4095,它们需要 12 位或 1½ 字节的存储空间。

        不确定 (N, N, N) 中 N 的值范围是多少,但如果它是 0..1,那么这两个函数将从它转换为 8 位分量 #AABBCC 或 12 位分量#AAABBBCCC 颜色值(不四舍五入)。请注意,每个函数的输出都是一个字符串,其值显示在下面每个打印语句之后。 ITOH8ITOH12 是对应函数使用的常量查找表。

        ITOH8 = [('%02X' % i) for i in range(0x100)]
        
        rgbconv8 = lambda c: ''.join( ['#'] + [ITOH8[int(v*0xFF)] for v in c] )
        
        print rgbconv8((0., 1., 0.)) #00FF00
        print rgbconv8((.2, .6, .75)) #3399BF
        
        ITOH12 = [('%03X' % i) for i in range(0x1000)]
        
        rgbconv12 = lambda c: ''.join( ['#'] + [ITOH12[int(v*0xFFF)] for v in c] )
        
        print rgbconv12((0., 1., 0.)) #000FFF000
        print rgbconv12((.2, .6, .75)) #333999BFF
        

        【讨论】:

          猜你喜欢
          • 2016-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多