3 }\@sddlmZddlmZmZddlmZmZm Z m Z ddl Z ddl Z dZddd Ze dd Zd d Zd dZGdddejZejejeejejdddZdS))print_function)Image ImageFile)i8i16bei32beo8Nz0.3rawZjpeg)rcCstt|ddS)Nr )i32PAD)crk/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-i584jbuk/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)selfkeyrrrgetint;szIptcImageFile.getintcCs|jjd}t|sd St|dt|df}t|ddksX|ddksX|ddkr`tdt|d}|d kr~td n<|d krd}n.|d krt|jj|d }nt|dd}||fS) Nr rr zinvalid IPTC/NAA filez%illegal field length in IPTC/NAA file)Nr)fpreadlenr SyntaxErrorIOErrorri16)rstagsizerrrfield>s (  zIptcImageFile.fieldc Csx|jj}|j\}}| s&|dkr(P|r:|jj|}nd}||jkrt|j|trj|j|j|q|j||g|j|<q||j|<qWt|jdd}t|jdd}d|jkrt|jddd}nd}|dko| rd|_ n6|dkr |r d ||_ n|d kr&|r&d ||_ |j d|j df|_ yt |j d}Wnt k rltdYnX|dkrd||fdd|jd|jdffg|_dS)N r <rrALZRGBr ZCMYKxzUnknown IPTC image compressioniptc)r-r.)r r/)r r/)r r0)r r0)r r2)r r3)r r4)r-r.)r#tellr,r$r isinstancelistappendrmoder_size COMPRESSIONKeyErrorr'r+tile) roffsetr*r+tagdataZlayers componentid compressionrrr_openXs@       zIptcImageFile._openc Cs.t|jdks |jdddkr,tjj|S|jd\}}}|\}}|jj|tjdd\}}tj |}|dkr|j d|j xV|j \}} |d krPx:| dkr|jj t| d } | sP|j | | t| 8} qWqW|jztj|} | j| j|_Wdytj|Wntk r&YnXXdS) Nrrr5F)textr z P5 %d %d 255 r-r.i )r-r.)r%r>rloadr#seektempfilemkstemposfdopenwriter+r,r$mincloseropenimunlinkOSError) rtyper>Zboxencodingr?Zo_fdoutfileor+r)Z_imrrrrFs8         zIptcImageFile.loadN) __name__ __module__ __qualname__formatformat_descriptionrr,rDrFrrrrr6s 0rz.iimcCsddlm}m}ddl}d}t|tr,|jSt||jrT|jjd}|r|jd}n8t||j ry|j j |j }Wnt tfk rYnX|dkrdSGdddt}|}t|_i|_|j||_y |jWnttfk 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)rWrXrYrrrr FakeImagesr_)r\r]ior7rrZ JpegImageFilegetZ TiffImageFiler*r@ZIPTC_NAA_CHUNKAttributeErrorr=object __class__BytesIOr#rD IndexError)rPr\r]radatar^r_rrr getiptcinfos4       ri) __future__rr`rr_binaryrrr(rrr rJrH __version__r<rrrrZ register_openrZZregister_extensionrirrrrs   {