3

hR                 @   s   d dl Z d dlZddlmZmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ dd	d
Zed d Zdd Zdd ZG dd dejZejeje ejejd dd ZdS )    N   )Image	ImageFile)i8)i16be)i32be)o8rawZjpeg)r         c             C   s   t t|  dd  S )Nr   )i32PAD)c r   S/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/IptcImagePlugin.pyi#   s    r   c             C   s,   x | D ]}t dt| dd qW t   d S )Nz%02x )end)printr   )r   r   r   r   r   dump'   s    
r   c               @   s4   e Zd ZdZdZdd Zdd Zdd Zd	d
 ZdS )IptcImageFileZIPTCzIPTC/NAAc             C   s   t | j| S )N)r   info)selfkeyr   r   r   getint7   s    zIptcImageFile.getintc             C   s   | j jd}t|sdS |d |d f}|d dksL|d dk sL|d dkrTtd|d }|d	krntd
n6|dkr|d}n(|dkrt| j j|d }n
t|d}||fS )Nr
   r   r         	   zinvalid IPTC/NAA file      z%illegal field length in IPTC/NAA file   )Nr   )fpreadlenSyntaxErrorOSErrorr   i16)r   stagsizer   r   r   field:   s    $

zIptcImageFile.fieldc       
      C   s  x| j j }| j \}}| s&|dkr(P |r:| j j|}nd }|| jkrt| j| trj| j| j| q| j| |g| j|< q|| j|< qW t| jd d }t| jd d }d| jkrt| jd d d }nd}|dko|  rd| _	n6|dkr|rd	| | _	n|d
kr&|r&d| | _	| j
d| j
df| _yt| j
d }W n. tk
r| }	 ztd|	W Y d d }	~	X nX |dkrd||fdd| jd | jd ffg| _d S )N   
   r   <   r   r   A   LZRGBr   ZCMYK      x   zUnknown IPTC image compressioniptc)r,   r-   )r   r.   )r   r.   )r   r/   )r   r/   )r   r1   )r   r2   )r   r3   )r,   r-   )r"   tellr+   r#   r   
isinstancelistappendr   moder   _sizeCOMPRESSIONKeyErrorr&   r*   tile)
r   offsetr)   r*   tagdataZlayers	componentidcompressioner   r   r   _openT   s>    




zIptcImageFile._openc             C   s:  t | jdks | jd d dkr,tjj| S | jd \}}}|\}}| jj| tjdd\}}tj	|}|dkr|j
d| j  xV| j \}}	|dkrP x:|	dkr| jjt|	d
}
|
sP |j
|
 |	t |
8 }	qW qW |j  z*tj|}|j  |j| _W d Q R X W d ytj| W n tk
r2   Y nX X d S )Nr   r   r4   F)textr	   zP5
%d %d
255
r,   r-   i    )r,   r-   )r$   r=   r   loadr"   seektempfilemkstemposfdopenwriter*   r+   r#   mincloser   openimunlinkr&   )r   typer=   Zboxencodingr>   Zo_fdoutfileor*   r(   Z_imr   r   r   rF      s8     


zIptcImageFile.loadN)	__name__
__module____qualname__formatformat_descriptionr   r+   rD   rF   r   r   r   r   r   2   s   1r   z.iimc             C   s   ddl }ddlm}m} d}t| tr,| jS t| |jrT| jjd}|r|jd}n8t| |j	ry| j
j|j }W n ttfk
r   Y nX |dkrdS G dd d}| } t| _i | _|j|| _y| j  W n ttfk
r   Y nX | jS )	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   Nr   )JpegImagePluginTiffImagePlugin	photoshopi  c               @   s   e Zd ZdS )zgetiptcinfo.<locals>.FakeImageN)rV   rW   rX   r   r   r   r   	FakeImage   s   r^   )io r[   r\   r6   r   r   ZJpegImageFilegetZTiffImageFiler)   r?   ZIPTC_NAA_CHUNKAttributeErrorr<   	__class__BytesIOr"   rD   
IndexError)rP   r_   r[   r\   datar]   r^   r   r   r   getiptcinfo   s4    
rg   )rJ   rH   r`   r   r   _binaryr   r   r'   r   r   r   r;   r   r   r   r   Zregister_openrY   Zregister_extensionrg   r   r   r   r   <module>   s   
|