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
U
T±dwã@s°ddlZddlZddlmZmZddlmZddlmZddlm    Z
ddlm Z dd    d
œZ e dƒd Z d d „Zdd„ZGdd„dejƒZe eje¡e ejd¡dd„ZdS)éNé)ÚImageÚ    ImageFile)Úi8)Úi16be)Úi32be)Úo8ÚrawZjpeg)réécCstt|dd…ƒS)Néüÿÿÿ)Úi32ÚPAD)Úc©rúJd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/IptcImagePlugin.pyÚi#srcCs(|D]}tdt|ƒddqtƒdS)Nz%02xú )Úend)Úprintr)rrrrrÚdump'src@s4eZdZdZdZdd„Zdd„Zdd„Zd    d
„Zd S) Ú IptcImageFileZIPTCzIPTC/NAAcCst|j|ƒS)N)rÚinfo)ÚselfÚkeyrrrÚgetint6szIptcImageFile.getintcCs´|j d¡}t|ƒsdS|d|df}|ddksL|ddksL|ddkrXd}t|ƒ‚|d    }|d
krvd }t|ƒ‚n6|d kr„d}n(|d kr¢t|j |d ¡ƒ}n
t|d    ƒ}||fS) Nr
)Nrréréé    zinvalid IPTC/NAA fileéé„z%illegal field length in IPTC/NAA fileé€)ÚfpÚreadÚlenÚ SyntaxErrorÚOSErrorrÚi16)rÚsÚtagÚmsgÚsizerrrÚfield9s" $
 
zIptcImageFile.fieldc
Cs¨|j ¡}| ¡\}}|rˆ|dkr$qˆ|r6|j |¡}nd}||jkr|t|j|tƒrf|j| |¡q†|j||g|j|<q||j|<qt|jddƒ}t|jddƒ}d|jkrÎt|jddƒd}nd}|dkræ|sæd|_    n2|dkrþ|rþd||_    n|d    kr|rd
||_    | 
d ¡| 
d ¡f|_ zt | 
d ¡}Wn2t k
rr}    zd}
t|
ƒ|    ‚W5d}    ~    XYnX|dkr¤d||fdd|jd|jdffg|_dS)N©éé
)ré<rr)réAÚLrÚRGBr ZCMYK)ré)ré)réxzUnknown IPTC image compressionÚiptc)r"Útellr,r#rÚ
isinstanceÚlistÚappendrÚmoderÚ_sizeÚ COMPRESSIONÚKeyErrorr&r+Útile) rÚoffsetr)r+ÚtagdataZlayersÚ    componentÚidÚ compressionÚer*rrrÚ_openUs@
 
 
 
 
 ÿzIptcImageFile._openc Cs2t|jƒdks |jdddkr,tj |¡S|jd\}}}|\}}|j |¡tjdd\}}t     |¡}|dkr‚| 
d|j ¡|  ¡\}}    |dkr˜qÒ|    dkr‚|j  t|    d    ƒ¡}
|
s¸q‚| 
|
¡|    t|
ƒ8}    q˜q‚| ¡z*t |¡} |  ¡| j|_W5QRXW5zt |¡Wntk
r*YnXXdS)
Nrrr7F)Útextr    z P5
%d %d
255
r-i )r$r@rÚloadr"ÚseekÚtempfileÚmkstempÚosÚfdopenÚwriter+r,r#ÚminÚcloseÚunlinkr&rÚopenÚim) rÚtyper@ZboxÚencodingrAZo_fdÚoutfileÚor+r(Z_imrrrrI†s6   
 
 zIptcImageFile.loadN)    Ú__name__Ú
__module__Ú __qualname__ÚformatÚformat_descriptionrr,rGrIrrrrr2s 1rz.iimc    Csðddl}ddlm}m}d}t|tƒr,|jSt||jƒrT|j d¡}|rŒ| d¡}n8t||j    ƒrŒz|j
j |j }Wnt tfk
rŠYnX|dkr˜dSGdd„dƒ}|ƒ}t|_i|_| |¡|_z | ¡Wnttfk
rèYnX|jS)    zÜ
    Get IPTC information from TIFF, JPEG, or IPTC file.
 
    :param im: An image containing IPTC data.
    :returns: A dictionary containing IPTC information, or None if
        no IPTC information block was found.
    rNr)ÚJpegImagePluginÚTiffImagePluginÚ    photoshopic@s eZdZdS)zgetiptcinfo.<locals>.FakeImageN)rYrZr[rrrrÚ    FakeImage×sra)ÚioÚr^r_r9rrZ JpegImageFileÚgetZ TiffImageFiler)rBZIPTC_NAA_CHUNKÚAttributeErrorr?Ú    __class__ÚBytesIOr"rGÚ
IndexError)rTrbr^r_Údatar`rarrrÚ getiptcinfo³s4
      rj)rMrKrcrrÚ_binaryrrr'rr rr>rrrrZ register_openr\Zregister_extensionrjrrrrÚ<module>s    
  |