PIL 的 ImageDraw 中可用的确切颜色名称是什么?

问题描述 投票:0回答:2

有枕头中所有指定颜色的列表吗?我在文档中找不到确切颜色名称的参考。

python-3.x python-imaging-library
2个回答
25
投票

名称在 ImageColor.py 中定义。这是获取完整列表的方法:

for name, code in PIL.ImageColor.colormap.items():
     print( f'{name:30} : {code}' )
aliceblue                      : #f0f8ff
antiquewhite                   : #faebd7
aqua                           : #00ffff
aquamarine                     : #7fffd4
azure                          : #f0ffff
beige                          : #f5f5dc
bisque                         : #ffe4c4
black                          : #000000
blanchedalmond                 : #ffebcd
blue                           : #0000ff
blueviolet                     : #8a2be2
brown                          : #a52a2a
burlywood                      : #deb887
cadetblue                      : #5f9ea0
chartreuse                     : #7fff00
chocolate                      : #d2691e
coral                          : #ff7f50
cornflowerblue                 : #6495ed
cornsilk                       : #fff8dc
crimson                        : #dc143c
cyan                           : #00ffff
darkblue                       : #00008b
darkcyan                       : #008b8b
darkgoldenrod                  : #b8860b
darkgray                       : #a9a9a9
darkgrey                       : #a9a9a9
darkgreen                      : #006400
darkkhaki                      : #bdb76b
darkmagenta                    : #8b008b
darkolivegreen                 : #556b2f
darkorange                     : #ff8c00
darkorchid                     : #9932cc
darkred                        : #8b0000
darksalmon                     : #e9967a
darkseagreen                   : #8fbc8f
darkslateblue                  : #483d8b
darkslategray                  : #2f4f4f
darkslategrey                  : #2f4f4f
darkturquoise                  : #00ced1
darkviolet                     : #9400d3
deeppink                       : #ff1493
deepskyblue                    : #00bfff
dimgray                        : #696969
dimgrey                        : #696969
dodgerblue                     : #1e90ff
firebrick                      : #b22222
floralwhite                    : #fffaf0
forestgreen                    : #228b22
fuchsia                        : #ff00ff
gainsboro                      : #dcdcdc
ghostwhite                     : #f8f8ff
gold                           : #ffd700
goldenrod                      : #daa520
gray                           : #808080
grey                           : #808080
green                          : #008000
greenyellow                    : #adff2f
honeydew                       : #f0fff0
hotpink                        : #ff69b4
indianred                      : #cd5c5c
indigo                         : #4b0082
ivory                          : #fffff0
khaki                          : #f0e68c
lavender                       : #e6e6fa
lavenderblush                  : #fff0f5
lawngreen                      : #7cfc00
lemonchiffon                   : #fffacd
lightblue                      : #add8e6
lightcoral                     : #f08080
lightcyan                      : #e0ffff
lightgoldenrodyellow           : #fafad2
lightgreen                     : #90ee90
lightgray                      : #d3d3d3
lightgrey                      : #d3d3d3
lightpink                      : #ffb6c1
lightsalmon                    : #ffa07a
lightseagreen                  : #20b2aa
lightskyblue                   : #87cefa
lightslategray                 : #778899
lightslategrey                 : #778899
lightsteelblue                 : #b0c4de
lightyellow                    : #ffffe0
lime                           : #00ff00
limegreen                      : #32cd32
linen                          : #faf0e6
magenta                        : #ff00ff
maroon                         : #800000
mediumaquamarine               : #66cdaa
mediumblue                     : #0000cd
mediumorchid                   : #ba55d3
mediumpurple                   : #9370db
mediumseagreen                 : #3cb371
mediumslateblue                : #7b68ee
mediumspringgreen              : #00fa9a
mediumturquoise                : #48d1cc
mediumvioletred                : #c71585
midnightblue                   : #191970
mintcream                      : #f5fffa
mistyrose                      : #ffe4e1
moccasin                       : #ffe4b5
navajowhite                    : #ffdead
navy                           : #000080
oldlace                        : #fdf5e6
olive                          : #808000
olivedrab                      : #6b8e23
orange                         : #ffa500
orangered                      : #ff4500
orchid                         : #da70d6
palegoldenrod                  : #eee8aa
palegreen                      : #98fb98
paleturquoise                  : #afeeee
palevioletred                  : #db7093
papayawhip                     : #ffefd5
peachpuff                      : #ffdab9
peru                           : #cd853f
pink                           : #ffc0cb
plum                           : #dda0dd
powderblue                     : #b0e0e6
purple                         : #800080
rebeccapurple                  : #663399
red                            : (255, 0, 0)
rosybrown                      : #bc8f8f
royalblue                      : #4169e1
saddlebrown                    : #8b4513
salmon                         : #fa8072
sandybrown                     : #f4a460
seagreen                       : #2e8b57
seashell                       : #fff5ee
sienna                         : #a0522d
silver                         : #c0c0c0
skyblue                        : #87ceeb
slateblue                      : #6a5acd
slategray                      : #708090
slategrey                      : #708090
snow                           : #fffafa
springgreen                    : #00ff7f
steelblue                      : #4682b4
tan                            : #d2b48c
teal                           : #008080
thistle                        : #d8bfd8
tomato                         : #ff6347
turquoise                      : #40e0d0
violet                         : #ee82ee
wheat                          : #f5deb3
white                          : (255, 255, 255)
whitesmoke                     : #f5f5f5
yellow                         : #ffff00
yellowgreen                    : #9acd32

还可以生成查找图像作为方便的参考:

from PIL import ImageColor, Image, ImageDraw

c = ImageColor.colormap
n = len( c )

cols        = 4
rows        = ((n-1) // cols) +1
cellHeight  = 30
cellWidth   = 170
imgHeight   = cellHeight * rows
imgWidth    = cellWidth * cols

i = Image.new( "RGB", (imgWidth,imgHeight), (0,0,0) )
a = ImageDraw.Draw( i )

for idx, name in enumerate( c ):
    y0 = cellHeight * (idx // cols)
    y1 = y0 + cellHeight
    x0 = cellWidth * (idx % cols)
    x1 = x0 + (cellWidth / 4)

    a.rectangle( [ x0, y0, x1, y1 ], fill=name, outline='black' )
    a.text( ( x1+1, y0+10 ), name, fill='white' )

i.save( 'color_chart.png' )


0
投票

如果它对任何人都有用,并且基于之前的答案,此功能会将所有颜色打印到终端(彩色文本),并尝试对它们进行排序

def printPillowColours():
   def sortColour(r,g,b, repetitions=1): # https://www.alanzucconi.com/2015/09/30/colour-sorting/
      lum     = math.sqrt( .241 * r + .691 * g + .068 * b )
      h, s, v = colorsys.rgb_to_hsv(r,g,b)
      h2      = int(h * repetitions)
      v2      = int(v * repetitions)

      if h2 % 2 == 1:
         v2  = repetitions - v2
         lum = repetitions - lum

      return (h2, lum, v2)
   
   i          = 1
   columns    = 1
   coloursLib = []
   
   # standardise colour data

   for name, code in ImageColor.colormap.items():
      parseCode = '#%02x%02x%02x' % code if type(code) == tuple else code # RGB tuple -> hex string
      r         = int(parseCode[1:3], 16)
      g         = int(parseCode[3:5], 16)
      b         = int(parseCode[5:7], 16)

      coloursLib.append((name, parseCode, r, g, b))

   # sort into rough colour categories
      
   coloursLib.sort(key=lambda a: sortColour(a[2],a[3],a[4],8))

   # output list
   
   for name, code, r, g, b in coloursLib: 
      print(f'\033[38;2;{r};{g};{b}m{name:20}\033[0m: {str(code):10}', end=("" if i%columns != 0 else "\n"))
      i += 1
© www.soinside.com 2019 - 2024. All rights reserved.