1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
U
T±då ã@s†ddlZddlmZmZmZmZddlmZGdd„dƒZdd„Z    d    d
„Z
d d „Z ddd„Z ddd„Z ddd„Zddd„Zdd„ZdS)éNé)ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚ PaletteFile)Ú    deprecatec@s|eZdZdZddd„Zedd„ƒZejd    d„ƒZed
d „ƒZejd d „ƒZd d„Z    dd„Z
dd„Z e Z ddd„Z dd„ZdS)Ú ImagePalettea¥
    Color palette for palette mapped images
 
    :param mode: The mode to use for the palette. See:
        :ref:`concept-modes`. Defaults to "RGB"
    :param palette: An optional palette. If given, it must be a bytearray,
        an array or a list of ints between 0-255. The list must consist of
        all channels for one color followed by the next color (e.g. RGBRGBRGB).
        Defaults to an empty palette.
    ÚRGBNrcCsP||_d|_|ptƒ|_d|_|dkrLtdddƒ|t|jƒkrLd}t|ƒ‚dS)NrzThe size parameteré
zwrong palette size)ÚmodeÚrawmodeÚ    bytearrayÚpaletteÚdirtyrÚlenÚ
ValueError)Úselfr rÚsizeÚmsg©rúGd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/ImagePalette.pyÚ__init__%s  zImagePalette.__init__cCs|jS©N)Ú_palette©rrrrr0szImagePalette.palettecCsd|_||_dSr)Ú_colorsr)rrrrrr4scCsh|jdkrbt|jƒ}i|_tdt|jƒ|ƒD]4}t|j|||…ƒ}||jkrRq,|||j|<q,|jS)Nr)rrr ÚrangerÚtuple)rZmode_lenÚiÚcolorrrrÚcolors9s
 
 
zImagePalette.colorscCs
||_dSr)r)rr rrrr EscCs<tƒ}|j|_|j|_|jdk    r0|jdd…|_|j|_|Sr)rr r rr)rÚnewrrrÚcopyIs
zImagePalette.copycCs |jr|j|jfS|j| ¡fS)z£
        Get palette contents in format suitable for the low-level
        ``im.putpalette`` primitive.
 
        .. warning:: This method is experimental.
        )r rr ÚtobytesrrrrÚgetdataTs zImagePalette.getdatacCs:|jrd}t|ƒ‚t|jtƒr$|jSt d|j¡}| ¡S)zUConvert palette to bytes.
 
        .. warning:: This method is experimental.
        ú!palette contains raw palette dataÚB)r rÚ
isinstancerÚbytesÚarrayr#)rrZarrrrrr#_s zImagePalette.tobytesc    
Csø|jrd}t|ƒ‚t|tƒrÞ|jdkrZt|ƒdkrx|ddkrLd}t|ƒ‚|dd…}n|jdkrxt|ƒdkrx|d    7}z |j|WStk
rÚ}z4t|jt    ƒs²t    |jƒ|_
t|jƒd}d
}|rà|j   d ¡|j   d ¡f}||krò|d 7}qà|dkrX|r@t tt| ¡ƒƒƒD](\}}|dkr||kr|}q@q|dkrXd}t|ƒ|‚||j|<|dt|jƒkrª|jd|d…t|ƒ|j|ddd…|_
n|j
t|ƒ7_
d |_|WY¢Sd}~XYnXndt|ƒ›}t|ƒ‚dS)zgGiven an rgb tuple, allocate palette entry.
 
        .. warning:: This method is experimental.
        r%r    éééÿz/cannot add non-opaque RGBA color to RGB paletteNZRGBA)r,rZ
backgroundZ transparencyrérz$cannot allocate more than 256 colorszunknown color specifier: )r rr'rr rr ÚKeyErrorrr rÚinfoÚgetÚreversedÚlistÚ    enumerateZ    histogramr(rÚrepr)    rrÚimagerÚeÚindexZspecial_colorsrÚcountrrrÚgetcoloros` 
 
 
 
þ
 
 
 
 
 
ÿþÿzImagePalette.getcolorc
CsÖ|jrd}t|ƒ‚t|tƒr&t|dƒ}| d¡| d|j›d¡tdƒD]|}| |›¡t|t|jƒ|dt|jƒƒD]>}z| d|j    |›¡Wq~t
k
rº| d    ¡Yq~Xq~| d¡qL|  ¡d
S) zVSave palette to text file.
 
        .. warning:: This method is experimental.
        r%Úwz
# Palette
z# Mode: Ú
r-rú z 0N) r rr'ÚstrÚopenÚwriter rrrÚ
IndexErrorÚclose)rÚfprrÚjrrrÚsave©s 
 
 
  & zImagePalette.save)r    Nr)N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rÚpropertyrÚsetterr r"r$r#Útostringr9rDrrrrrs 
 
 
 
 
 
:rcCstƒ}||_||_d|_|S)Nr)rr rr)r ÚdatarrrrÚrawÄs
rMcCs6g}|dkr.tdƒD]}| ||d¡qnt‚|S)Nrr-r,)rÚappendÚNotImplementedError)ZblackÚwhiteÚlutrrrrÚmake_linear_lutÐs  rRcCs4g}tdƒD]"}| t|d|ddƒ¡q |S)Nr-gào@gà?)rrNÚint)ÚexprQrrrrÚmake_gamma_lutÚs  rUr    cs4ttdtˆƒƒƒ}| ¡tˆ‡fdd„|DƒƒS)Nr-csg|]}|tˆƒ‘qSr©r©Ú.0r©r rrÚ
<listcomp>äsznegative.<locals>.<listcomp>)r2rrÚreverser©r rrrYrÚnegativeásr]cCs@ddlm}g}tdt|ƒƒD]}| |ddƒ¡q t||ƒS)Nr)Úrandintr-r,)Úrandomr^rrrNr)r r^rrrrrr_çs
 r_ú#fff0c0cs0dd„t |¡Dƒ‰td‡fdd„tdƒDƒƒS)NcSsg|]}td|ƒ‘qS)r)rR)rXZbandrrrrZñszsepia.<locals>.<listcomp>r    cs g|]}ˆ|d|d‘qS)r+rrW©ZbandsrrrZòsi)rZgetrgbrr)rPrrarÚsepiaðsrbcs,ttdtˆƒƒƒ}tˆ‡fdd„|DƒƒS)Nr-csg|]}|tˆƒ‘qSrrVrWrYrrrZ÷szwedge.<locals>.<listcomp>)r2rrrr\rrYrÚwedgeõsrcc Cszt|dƒf}tjtjtjfD]B}z$| d¡||ƒ ¡}|rBWqlWqttfk
r\YqXqd}t|ƒ‚W5QRX|S)NÚrbrzcannot load palette)    r>rrrÚseekZ
getpaletteÚ SyntaxErrorrÚOSError)ÚfilenamerBZpaletteHandlerrQrrrrÚloadús ý
 
ri)r    )r    )r`)r    )r)ÚrrrrZ
_deprecaterrrMrRrUr]r_rbrcrirrrrÚ<module>s ,