B .^@sddlZddlZddlmZmZddlmZmZm Z m Z dddZ e ddZ d d Zd d ZGd ddejZeejeeejdddZdS)N)Image ImageFile)i8i16bei32beo8rawZjpeg)rcCstt|ddS)N)i32PAD)cr7/tmp/pip-install-mwhup7aw/Pillow/PIL/IptcImagePlugin.pyi srcCs,x |D]}tdt|ddqWtdS)Nz%02x )end)printr)rrrrrdump$s rc@s4eZdZdZdZddZddZddZd d Zd S) IptcImageFileZIPTCzIPTC/NAAcCst|j|S)N)rinfo)selfkeyrrrgetint4szIptcImageFile.getintcCs|jd}t|sdSt|dt|df}t|ddksX|ddksX|ddkr`tdt|d }|d kr~td n<|d krd}n.|d krt|j|d }nt|d d}||fS) Nr )Nrrr zinvalid IPTC/NAA filez%illegal field length in IPTC/NAA file)fpreadlenr SyntaxErrorOSErrorri16)rstagsizerrrfield7s (  zIptcImageFile.fieldc Csx|j}|\}}|r$|dkr&P|r8|j|}nd}||jkr~t|j|trh|j||q|j||g|j|<q||j|<qWt|jdd}t|jdd}d|jkrt|jddd}nd}|dkr|sd|_ n6|dkr|rd||_ n|d kr |r d ||_ | d | d f|_ yt | d }Wnt k rftdYnX|dkrd||fdd|jd|jdffg|_dS)N) )r<rr)rALrZRGBr ZCMYK)r)r)rxzUnknown IPTC image compressioniptc)r"tellr+r#r isinstancelistappendrmoder_size COMPRESSIONKeyErrorr&r*tile) roffsetr)r*tagdataZlayers componentid compressionrrr_openQs>         zIptcImageFile._openc Cs:t|jdks |jdddkr,tj|S|jd\}}}|\}}|j|tjdd\}}t |}|dkr| d|j xV| \}} |dkrPx:| dkr|j t| d } | sP| | | t| 8} qWqW|z*t|} | | j|_WdQRXWdyt|Wntk r2YnXXdS) Nrrr4F)textr z P5 %d %d 255 )r,r-i )r$r=rloadr"seektempfilemkstemposfdopenwriter*r+r#mincloseropenimunlinkr&) rtyper=Zboxencodingr>Zo_fdoutfileor*r(Z_imrrrrEs8        zIptcImageFile.loadN) __name__ __module__ __qualname__formatformat_descriptionrr+rCrErrrrr/s 1rz.iimc Csddlm}m}ddl}d}t|tr,|jSt||jrT|jd}|r|d}n8t||j ry|j j |j }Wnt tfk rYnX|dkrdSGddd}|}t|_i|_|||_y |Wnttfk rYnX|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. r)TiffImagePluginJpegImagePluginrN photoshopic@s eZdZdS)zgetiptcinfo..FakeImageN)rUrVrWrrrr FakeImagesr])rZr[ior6rrZ JpegImageFilegetZ TiffImageFiler)r?ZIPTC_NAA_CHUNKAttributeErrorr< __class__BytesIOr"rC IndexError)rOrZr[r_datar\r]rrr getiptcinfos4       rf)rIrGr^rr_binaryrrr'rr rr;rrrrZ register_openrXZregister_extensionrfrrrrs   |