zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
U
T±d<uãA@sìddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    m
Z
m Z ddl m Zddl mZddl mZddl mZddlmZdd    lmZd
d „Zd d „Zdd„Zdd„Zdd„Zddefddefddefddefddefddefd d!efd"d#efd$d%d&efd'd(efd)d*efd+d,efd-d.efd/d0efd1d2efd3d4d5d6d7d8d9d:d;d<d=d>efdd?efd@dAefdBdCefdDdEefdFdGefdHdIefdJdKefdLdMefdNdOefdPdQefdRdSefdTdUefdVdWefdXdYefdZd[efd\d]efd^d_efd`daefdbdcefdddeefdfdgefdhdidjdkdldmdndodpdqdrdsdtduddvefdwœ?Zdxdy„ZGdzd{„d{e j ƒZd|d}„Z d~d„Z!d€d€ddd‚dƒd„œZ"d…Z#ddd†d‡œZ$dˆd‰„Z%dŠd‹„Z&dŒd„Z'dŽd„Z(d—dd‘„Z)e
 *ej+e)e¡e
 ,ej+e'¡e
 -ej+d’d“d”d•g¡e
 .ej+d–¡dS)˜éNé)ÚImageÚ    ImageFile)Úi16be)Úi32be)Úo8)Úo16be©Ú    deprecate)ÚpresetscCs&t|j d¡ƒd}t |j|¡dS)Né)Úi16ÚfpÚreadrÚ
_safe_read)ÚselfÚmarkerÚn©rúJd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/JpegImagePlugin.pyÚSkip8src Cs t|j d¡ƒd}t |j|¡}d|d@}||j|<|j ||f¡|dkrä|dd…dkrät|dƒ|jd<}t    |d    ƒ|jd
<z |d }t|d ƒt|d ƒf}Wnt
k
r¸Yn(X|dkrÌ||jd<||jd<||jd<n`|dkr.|dd…dkr.d|jkrD||jd<|j  ¡|d|_ n|dkrX|dd…dkrX||jd<nì|dkr„|dd…dkr„|j  |¡nÀ|dkr¢|dd…dkr¢d}|j di¡}    |||d…dkrDz´|d7}t||ƒ}
|d7}||} |d| 7}||d@7}t||ƒ} |d7}|||| …} |
d kr^t| d!ƒd"t| dƒt| d ƒd"t| dƒd#œ} | |    |
<|| 7}||d@7}Wntjk
ršYqDYnXq²n¢|d$krþ|dd…d%krþt|dƒ|jd&<z |d'}Wntk
rðYn X||jd(<nF|dkrD|dd…d)krD|dd…|jd*<|j  ¡|d|jd+<d|jkrd|jkrz€| ¡}|d,}|d-}zt|d!ƒ|d}Wntk
r¨|}YnXt |¡rºt‚|d.krÌ|d/9}||f|jd<Wn*tttttfk
rd0|jd<YnXdS)1Nr zAPP%dééàÿésJFIFéZjfiféZ jfif_versionééé
rÚdpiÚ    jfif_unitÚ jfif_densityéáÿsExifÚexifééâÿsFPXRZflashpixé ó ICC_PROFILEéíÿésPhotoshop 3.0Ú    photoshops8BIMiíri)Z XResolutionZDisplayedUnitsXZ YResolutionZDisplayedUnitsYéîÿsAdobeÚadobeé Úadobe_transformsMPFÚmpZmpoffseti(iégR¸…ëQ@)éHr1)r rrrrÚappÚapplistÚappendÚinfoÚdivmodÚ    ExceptionÚtellZ _exif_offsetÚicclistÚ
setdefaultÚi32ÚstructÚerrorÚ
IndexErrorÚgetexifÚfloatÚ    TypeErrorÚmathÚisnanÚ
ValueErrorÚKeyErrorÚ SyntaxErrorÚZeroDivisionError)rrrÚsr2Úversionr r!Úoffsetr*ÚcodeZname_lenÚsizeÚdatar.r#Zresolution_unitZ x_resolutionrrrrÚAPP=s˜ 
 
 
 
 
 
 
  ü  
 
rNcCsJt|j d¡ƒd}t |j|¡}||jd<||jd<|j d|f¡dS)Nr ÚcommentÚCOM)    r rrrrr5r2r3r4)rrrrHrrrrP¶s
 
 
rPc
Csœt|j d¡ƒd}t |j|¡}t|dƒt|dƒf|_|d|_|jdkrbd|j›d}t|ƒ‚|d|_|jdkr~d    |_    n:|jdkrd
|_    n(|jd kr¢d |_    nd|j›d }t|ƒ‚|dkrÔd|j
d<|j
d<|j rD|j   ¡|j ddt |j ƒkr0g}|j D]}| |dd…¡q
d |¡}nd}||j
d<g|_ tdt |ƒdƒD]B}|||d…}    |j |    d|    dd|    dd@|    df¡qTdS)Nr r0rrrzcannot handle z -bit layersrÚLÚRGBrÚCMYKz -layer images)éÂÿéÆÿéÊÿéÎÿÚ progressiveÚ progressioné r)óÚ icc_profiler$ér)r rrrrÚ_sizeÚbitsrFÚlayersÚmoder5r9ÚsortÚlenr4ÚjoinÚrangeÚlayer)
rrrrHÚmsgZprofileÚpr\ÚiÚtrrrÚSOFÁs>
 
 
 
 
 
 
 
 
rkcsÒt|j d¡ƒd}t |j|¡}t|ƒrÎ|d}|ddkrBdnd}d|d}t|ƒ|krjd}t|ƒ‚t |dkrzdnd|d|…¡‰tj    d    kr¤|dkr¤ˆ 
¡‡fd
d „t Dƒ|j |d @<||d…}q"dS) Nr rr]ré@zbad quantization table markerÚBÚHÚlittlecsg|] }ˆ|‘qSrr)Ú.0ri©rMrrÚ
<listcomp>szDQT.<locals>.<listcomp>r) r rrrrrcrFÚarrayÚsysÚ    byteorderZbyteswapÚ zigzag_indexÚ quantization)rrrrHÚvZ    precisionZ    qt_lengthrgrrqrÚDQTós   ryZSOF0z Baseline DCTZSOF1zExtended Sequential DCTZSOF2zProgressive DCTZSOF3zSpatial losslessZDHTzDefine Huffman tableZSOF5zDifferential sequential DCTZSOF6zDifferential progressive DCTZSOF7zDifferential spatial)ZJPGÚ    ExtensionNZSOF9zExtended sequential DCT (AC)ZSOF10zProgressive DCT (AC)ZSOF11zSpatial lossless DCT (AC)ZDACz%Define arithmetic coding conditioningZSOF13z Differential sequential DCT (AC)ZSOF14z!Differential progressive DCT (AC)ZSOF15zDifferential spatial (AC))ZRST0z    Restart 0N)ZRST1z    Restart 1N)ZRST2z    Restart 2N)ZRST3z    Restart 3N)ZRST4z    Restart 4N)ZRST5z    Restart 5N)ZRST6z    Restart 6N)ZRST7z    Restart 7N)ZSOIzStart of imageN)ZEOIz End of imageNZSOSz Start of scanzDefine quantization tableZDNLzDefine number of linesZDRIzDefine restart intervalZDHPzDefine hierarchical progressionZEXPzExpand reference componentZAPP0zApplication segment 0ÚAPP1zApplication segment 1ZAPP2zApplication segment 2ZAPP3zApplication segment 3ZAPP4zApplication segment 4ZAPP5zApplication segment 5ZAPP6zApplication segment 6ZAPP7zApplication segment 7ZAPP8zApplication segment 8ZAPP9zApplication segment 9ZAPP10zApplication segment 10ZAPP11zApplication segment 11ZAPP12zApplication segment 12ZAPP13zApplication segment 13ZAPP14zApplication segment 14ZAPP15zApplication segment 15)ZJPG0z Extension 0N)ZJPG1z Extension 1N)ZJPG2z Extension 2N)ZJPG3z Extension 3N)ZJPG4z Extension 4N)ZJPG5z Extension 5N)ZJPG6z Extension 6N)ZJPG7z Extension 7N)ZJPG8z Extension 8N)ZJPG9z Extension 9N)ZJPG10z Extension 10N)ZJPG11z Extension 11N)ZJPG12z Extension 12N)ZJPG13z Extension 13NÚComment)?iÀÿiÁÿrTiÃÿiÄÿiÅÿrUiÇÿiÈÿiÉÿrViËÿiÌÿiÍÿrWiÏÿiÐÿiÑÿiÒÿiÓÿiÔÿiÕÿiÖÿi×ÿiØÿiÙÿéÚÿiÛÿiÜÿiÝÿiÞÿißÿrr"r%iãÿiäÿiåÿiæÿiçÿièÿiéÿiêÿiëÿiìÿr(r+iïÿiðÿiñÿiòÿióÿiôÿiõÿiöÿi÷ÿiøÿiùÿiúÿiûÿiüÿéýÿiþÿcCs|dd…dkS)Nr0sÿØÿr)ÚprefixrrrÚ_acceptQsr€c@sLeZdZdZdZdd„Zdd„Zdd„Zd    d
„Zd d „Z    d d„Z
dd„Z dS)Ú JpegImageFileÚJPEGzJPEG (ISO 10918)cCsH|j d¡}t|ƒs d}t|ƒ‚d}d|_|_g|_i|_i|_i|_    i|_
g|_ g|_ |d}|dkr„||j d¡}t |ƒ}n|j d¡}qZ|tkrt|\}}}|dk    r¼|||ƒ|dkrö|j}|jdkrØd    }d
d |jd|d ffg|_qD|j d¡}qZ|dks|d krd}qZ|dkr6|j d¡}qZd}t|ƒ‚qZdS)Nr0znot a JPEG fileóÿréÿrr}rSúCMYK;IÚjpeg©rrÚiÿÿiÿzno marker found)rrr€rFr_r`rfZ
huffman_dcZ
huffman_acrwr2r3r9r ÚMARKERrarLÚtile)rrHrgriÚnameÚ descriptionÚhandlerÚrawmoderrrÚ_open^sH  
 
 
 
 
zJpegImageFile._opencCs.|j |¡}|s*tjr*t|dƒs*d|_dS|S)z›
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        Ú_endedTsÿÙ)rrrZLOAD_TRUNCATED_IMAGESÚhasattrr)rÚ
read_bytesrHrrrÚ    load_read‘s
 zJpegImageFile.load_readc Csbt|jƒdkrdS|jrdS|jd\}}}}d}|j}|ddkrZ|dkrZ||_|df}|r"t|jd|d|jd|dƒ}dD]}    ||    krŠqœqŠ|d|d|d|d|    d|    |d|d|d|    d|    |df}|jd|    d|    |jd|    d|    f|_|    }||||fg|_|df|_dd|d||d|f}
|j|
fS)    NrrrR)rQÚYCbCrrˆ)rrr rr r0)rcrŠZ decoderconfigrLraÚminr^) rrarLÚdÚeÚoÚaZscaleZ original_sizerHZboxrrrÚdraft¡s4&""ü.
zJpegImageFile.draftcCs¶t ¡\}}t |¡tj |j¡r:t dd||jg¡n d}t    |ƒ‚z*t   |¡}| ¡|j|_W5QRXW5zt 
|¡Wnt k
r”YnXX|jj|_|jj|_g|_dS)NZdjpegú-outfilezInvalid Filename)ÚtempfileÚmkstempÚosÚcloseÚpathÚexistsÚfilenameÚ
subprocessÚ
check_callrDÚunlinkÚOSErrorrÚopenÚloadÚimrarLr^rŠ)rÚfr rgZ_imrrrÚ
load_djpegÅs" 
 
 
zJpegImageFile.load_djpegcCst|ƒS©N)Ú_getexif©rrrrr­ßszJpegImageFile._getexifcCst|ƒSr¬)Ú_getmpr®rrrr¯âszJpegImageFile._getmpcCsB|jD]6\}}|dkr| dd¡\}}|dkr| |¡SqiS)z™
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.
 
        :returns: XMP tags in a dictionary.
        r{órshttp://ns.adobe.com/xap/1.0/)r3ÚrsplitZ_getxmp)rÚsegmentÚcontentrZxmp_tagsrrrÚgetxmpås zJpegImageFile.getxmpN) Ú__name__Ú
__module__Ú __qualname__ÚformatÚformat_descriptionrr“ršr«r­r¯r´rrrrrZs3$rcCsd|jkrdS| ¡ ¡S)Nr#)r5r?Z_get_merged_dictr®rrrr­õs
r­c
Cs<z|jd}Wntk
r$YdSXt |¡}| d¡}|dd…dkrNdnd}ddlm}z,| |¡}| |j    ¡| 
|¡t |ƒ}Wn0t k
rº}zd    }    t |    ƒ|‚W5d}~XYnXz |d
}
Wn0tk
rø}zd }    t |    ƒ|‚W5d}~XYnXg} z|d } td |
ƒD]ä} t |›d| | d¡}d}t t||ƒƒ}t|dd@ƒt|dd@ƒt|dd@ƒ|dd@d?|dd@d?|dd@dœ}|dd kr°d|d<n d}    t |    ƒ‚ddd d!d"d#d$d%œ}| |d&d'¡|d&<||d<|  |¡q| |d <Wn2tk
r6}zd(}    t |    ƒ|‚W5d}~XYnX|S))Nr/rrsMM*ú>ú<r)ÚTiffImagePluginz)malformed MP Index (unreadable directory)é°z(malformed MP Index (no number of images)i°rZLLLHHr])Ú    AttributeÚSizeZ
DataOffsetZEntryNo1ZEntryNo2r¾li@i iéiéiÿÿÿ)ZDependentParentImageFlagZDependentChildImageFlagZRepresentativeImageFlagZReservedÚImageDataFormatÚMPTyperÂr‚z!unsupported picture format in MPOÚ    Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)riiiiiirÃÚUnknownz!malformed MP Index (bad MP Entry))r5rEÚioÚBytesIOrrˆr¼ZImageFileDirectory_v2ÚseekÚnextr¨Údictr7rFrer<Ú unpack_fromÚzipÚboolÚgetr4)rrMÚ file_contentsÚheadZ
endiannessr¼r5r/r—rgZquantZ    mpentriesZ rawmpentriesZentrynumZ unpackedentryÚlabelsZmpentryZ mpentryattrZ    mptypemaprrrr¯ûsv
 
 
 
  ÿ
ú
ù     r¯rQrRr…r”)Ú1rQrRZRGBXrSr”)@rrrr$r)rrÀér rrrZr]ééé*r0rr&éééé)é+é    r-érÁéé(é,é5rééé é'é-é4é6ééé!é&é.é3é7é<éé"é%é/é2é8é;é=é#é$é0é1é9é:é>é?r ))rrrrrr)r rrrrr)r r rrrrcCstdddd|S)NÚconvert_dict_qtablesrzConversion is no longer needed)Úactionr    ©ÚqtablesrrrrgsrcCsZt|dƒr|jdkrdS|jddd…|jddd…|jddd…}t |d¡S)Nr`)rréÿÿÿÿrrr0r )r‘r`rfÚ    samplingsrÎ)r©ZsamplingrrrÚ get_samplingls6rc Csþ|jdks|jdkr d}t|ƒ‚zt|j}Wn:tk
rh}zd|j›d}t|ƒ|‚W5d}~XYnX|j}dd„| dd¡Dƒ}| d    d
¡}| d d
¡}    | d ¡}
|d kr¾d
}d }    d }
n„|t    krêt    |} d
}|  d d
¡}    |  d¡}
nXt
|t ƒsd}t|ƒ‚n>|    t    krt    |     d d
¡}    t
|
t ƒrB|
t    krBt    |
 d¡}
|    dkrRd}    nZ|    dkrbd}    nJ|    dkrrd}    n:|    dkr‚d}    n*|    d kr¬|j dkr¤d}t|ƒ‚t|ƒ}    dd„} |
d krâ|j dkrÖd}t|ƒ‚t|ddƒ}
| |
ƒ}
| dd¡} d}| d¡}|r–d}||}g}|rB| |d|…¡||d…}qd}|D]J}td|t|ƒƒ}| d|d t|ƒtt|ƒƒ|7} |d7}qJ| d!|j d!¡¡}| d"d#¡pÂ| d$d#¡}| d%d#¡}| d&d¡}t
|tjƒrò| ¡}t|ƒ|kr d'}t|ƒ‚||| d(d¡|| d)d¡|d|d|    |
|| |f |_d}|sR|rº|jd*krxd+|jd|jd}nB|d,ksŒ|d
kr¦d|jd|jd}n|jd|jd}ttj|t|ƒd-t| ƒdƒ}t ||d.d|jd|fg|¡dS)/Nrz cannot write empty image as JPEGzcannot write mode z as JPEGcSsg|] }t|ƒ‘qSr)Úround)rpÚxrrrrr‡sz_save.<locals>.<listcomp>rr‡ÚqualityrÚ subsamplingrZkeeprwzInvalid quality settingz4:4:4z4:2:2rz4:2:0r z4:1:1r‚z3Cannot use 'keep' when original image is not a JPEGc shˆdkr ˆStˆtƒr|zdd„ˆ ¡Dƒ‰Wn0tk
r\}zd}t|ƒ|‚W5d}~XYn X‡fdd„tdtˆƒdƒDƒ‰tˆtttfƒrdtˆtƒr´‡fdd„ttˆƒƒDƒ‰ntˆtƒrÆtˆƒ‰dtˆƒkrÞdksìnd    }t|ƒ‚t    ˆƒD]j\}}z"t|ƒdkrt
‚t   d
|¡}Wn2t
k
rP}zd}t|ƒ|‚W5d}~XYqôXt|ƒˆ|<qôˆSdS) NcSs.g|]&}| dd¡d ¡D] }t|ƒ‘qqS)ú#rr)ÚsplitÚint)rpÚlineÚnumrrrrr´sþz3_save.<locals>.validate_qtables.<locals>.<listcomp>zInvalid quantization tablecsg|]}ˆ||d…‘qS)rlr)rprH)Úlinesrrrr½srrlcsg|]}|ˆkrˆ|‘qSrr)rpÚkeyrrrrrÀsrz$None or too many quantization tablesrn) Ú
isinstanceÚstrÚ
splitlinesrDrercÚtupleÚlistrÊÚ    enumeraterArs)rr—rgÚidxÚtabler)rrrÚvalidate_qtables¯s>
þ
 
 
 
ÿ
z_save.<locals>.validate_qtablesÚextrar[r~r\r)sÿâr'rOrXFrYÚoptimizer#zEXIF data is too longZsmoothZ
streamtyperSré_rr†)ÚwidthÚheightrDÚRAWMODErarEr¦Z encoderinforÎr rrrr¸rÚgetattrr4Úo16rcrr5rZExifÚtobytesZ encoderconfigrLÚmaxrZMAXBLOCKÚ_save)r©rr¢rgrŽr—r5rr
r rÚpresetrrZMAX_BYTES_IN_MARKERr\ZICC_OVERHEAD_LENZMAX_DATA_BYTES_IN_MARKERÚmarkersrirrLrOrXrr#Úbufsizerrrr&zsÖ  
 
 
 
 
 
 
 
 %
 
ÿþý
üûÿ   
 
ô   r&cCsB| ¡}t dd||g¡zt |¡Wntk
r<YnXdS)NZcjpegr›)Ú_dumpr£r¤ržr¥r¦)r©rr¢rœrrrÚ _save_cjpeg)s r+c    Cstt||ƒ}z0| ¡}|ddkr8ddlm}| ||¡}Wn4ttfk
rRYntk
rnt     d¡YnX|S)Nr½r)Ú MpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)
rr¯ZMpoImagePluginr,ZadoptrAr>rFÚwarningsÚwarn)rr¢r©Zmpheaderr,rrrÚ jpeg_factory5s
  ÿ
r/z.jfifz.jpez.jpgz.jpegz
image/jpeg)NN)/rsrÆrBržr<r£rtrœr-rˆrrÚ_binaryrr rr;rrr#Z
_deprecater
Z JpegPresetsr rrNrPrkryr‰r€rr­r¯r!rvrrrr&r+r/Z register_openr¸Z register_saveZregister_extensionsZ register_mimerrrrÚ<module>"sÞ      y 2ÁC    Pú
 ý0