)EjddlmZddlmZddlmZddlmZmZddl m Z ddl m Z dd d ZddZGddejZejejeejejdddZdS)) annotations)BytesIO)cast)Image ImageFile)i16be)i32berawjpeg)rcbytesreturnintc6td|zddS)Ns)i32)rs EC:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/IptcImagePlugin.py_ir!s  a% & &&c6eZdZdZdZddZdd Zdd Zdd ZdS) IptcImageFileIPTCzIPTC/NAAkeytuple[int, int]rrc6t|j|S)N)rinfo)selfrs rgetintzIptcImageFile.getint.s$)C.!!!r"tuple[tuple[int, int] | None, int]c|jJ|jd}|dsdS|d|df}|ddks |ddvrd }t||d }|d krd }t ||d krd}nA|d kr+t |j|d z }nt |d }||fS)Nr )Nrrr) rr$r  zinvalid IPTC/NAA filer&z%illegal field length in IPTC/NAA file)fpreadstrip SyntaxErrorOSErrorri16)rstagmsgsizes rfieldzIptcImageFile.field1sw""" GLLOOwww 7dAaDj Q44<<3q6)III)Cc"" "t #::9C#,,  S[[DD CZZdgll4#:..//DDq!99DDyrNonec|jJ |j}|\}}|r|dkrn|r|j|}nd}||jvrYt |j|t r!|j||n"|j||g|j|<n ||j|<|jdd}|jdd}|dkr |s d|_d}nA|dkr |rd|_n|d kr |rd |_d |jvr|jd ddz }nd}| d | d f|_ t| d}n$#t$r} d} t| | d} ~ wwxYw|dkr)tjdd|jz|||fg|_dSdS)NTr* )r&<rrLr&RGBr'CMYK)r&A)r&)r&)r&xzUnknown IPTC image compressioniptc)rr)r/tellr9r0r isinstancelistappend_moder _size COMPRESSIONKeyErrorr3r_Tiler8tile) roffsetr6r8tagdatalayers componentband compressioner7s r_openzIptcImageFile._openNsw""" )W\\^^F IC #.. ',,t,,didind33?IcN))'2222&*ing%>DIcNN!( # )$7#A&Ig&q) Q;;y;DJDD{{y{" 1# $)##y)!,q0[[))4;;w+?+??  &%dkk(&;&;>(:F[RVDWXXDIII >s9 F F;$F66F;Image.core.PixelAccess | Nonec|jr|jdj}t|tsJ|\}}|jJ|j|jdjt}|dkr|d|j z | \}}|dkrn_|dkrX|j t|d}|sn-|||t|z}|dkX}tj|5}|Utjd|j gtj|jz} || |<tj|j| } n|} | | j|_dddn #1swxYwYg|_t,j|S)Nrr s P5 %d %d 255 Tr<i r?)rPargsrHtupler/seekrQrwriter8r9r0minlenropennew getmodebandsmodemergeloadimr) rr[rVrUotyper8r5_imbandsrgs rrfzIptcImageFile.loads 9" 9Q<$DdE** * ** $ K7&&& GLL1, - - - Ae##+di7888 #!ZZ\\ d7??Qhh St__55AGGAJJJCFFND Qhh #A ##"YsCH5569KDI9V9VVE"%E$KTY66BBBGGIII%               DI"''---s-A:F33F7:F7N)rrrr)rr!)rr:)rrY) __name__ __module__ __qualname__formatformat_descriptionr r9rXrfrrrr*sp F#"""":2222h$.$.$.$.$.$.rrz.iimrgImageFile.ImageFile1dict[tuple[int, int], bytes | list[bytes]] | Nonecddlm}m}d}t|tr#d|jDSt||jr2|jd}|r|d}n>t||j r) |j j |j }n#t$rYnwxYw|dSGdd}|}t|_tt|}i|_t!||_ |n#t&tf$rYnwxYwd |jDS) 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. r)JpegImagePluginTiffImagePluginNcDi|]\}}t|t||SrqrHr\.0kvs r zgetiptcinfo..s-IIIAJq%4H4HI1IIIr photoshopiceZdZdS)getiptcinfo..FakeImageN)rlrmrnrqrr FakeImagers rrcDi|]\}}t|t||Srqrxrys rr}zgetiptcinfo..s- J J JTQZ55I5I JAq J J Jr)rurvrHrritems JpegImageFileget TiffImageFiletag_v2_tagdataIPTC_NAA_CHUNKrN __class__rrr/rX IndexError)rgrurvdatar~rfake_imiptc_ims r getiptcinfors32222222 D"m$$IIIIII B5 6 6 GKK ,,  )==((D B5 6 6 9%o&DEDD    D  |t        ikkG%G='**GGLGJ    !      K JW\//11 J J JJs$ B88 CC D55E E N)rrrr)rgrrrrs) __future__riortypingrrrr_binaryr r4r rrMrr register_openroregister_extensionrrqrrrs&"#"""""!!!!!!!!!!!!F## ''''|.|.|.|.|.I'|.|.|.~M(-888-v6664K4K4K4K4K4Kr