a
    Qh                     @   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eje eejd dd ZdS )    N   )Image	ImageFile)i8)i16be)i32be)o8rawjpeg)r         c                 C   s   t t|  dd  S )N)i32PAD)c r   L/var/www/sistema_ama/venv/lib/python3.9/site-packages/PIL/IptcImagePlugin.pyi#   s    r   c                 C   s(   | D ]}t dt| dd q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   getint6   s    zIptcImageFile.getintc                 C   s   | j d}|dsdS |d |d f}|d dksB|d dvrNd	}t||d
 }|dkrld}t|n6|dkrzd}n(|dkrt| j |d }n
t|d
}||fS )Nr       )Nr   r      r      )
r   r      r   r            	      zinvalid IPTC/NAA filer       z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr   i16)r   stagmsgsizer   r   r   field9   s"    


zIptcImageFile.fieldc              
   C   s  | j  }|  \}}|r|dkr$q|r6| j |}nd }|| jv r|t| j| trf| j| | q| j| |g| j|< q || j|< q t| jd d }t| jd d }d| jv rt| jd d d }nd}|dkr|sd| _	n2|dkr|rd| | _	n|d	kr|rd
| | _	| 
d| 
df| _zt| 
d }W n4 tyt }	 zd}
t|
|	W Y d }	~	n
d }	~	0 0 |dkrd||fdd| jd | jd ffg| _d S )Nr#   
   )r    <   r   r   )r    A   Lr    RGBr   CMYK)r       )r       )r    x   zUnknown IPTC image compressioniptc)r(   tellr2   r)   r   
isinstancelistappendr   _moder   _sizeCOMPRESSIONKeyErrorr,   r1   tile)r   offsetr/   r1   tagdatalayers	componentidcompressioner0   r   r   r   _openU   s@    



 
 zIptcImageFile._openc                 C   sj  t | jdks | jd d dkr,tj| S | jd \}}}|\}}| j| tjdd\}}t	|}|dkr|
d| j  |  \}}	|dkrq|	dkr| jt|	d	}
|
sq|
|
 |	t |
8 }	qq|  zdt| }|  |j| _W d    n1 s0    Y  W zt| W n ty<   Y n0 n&zt| W n tyb   Y n0 0 d S )
Nr   r   r=   F)textr	   zP5
%d %d
255
r3   i    )lenrF   r   loadr(   seektempfilemkstemposfdopenwriter1   r2   r)   mincloser   openimunlinkr,   )r   typerF   boxencodingrG   Zo_fdoutfileor1   r.   _imr   r   r   rQ      s>     

*zIptcImageFile.loadN)	__name__
__module____qualname__formatformat_descriptionr   r2   rN   rQ   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d}|r|d}n6t| |j	rz| j
j|j }W n ttfy   Y n0 |du rdS G dd d}| } t| _i | _||| _z|   W n ttfy   Y n0 | 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)rc   rd   re   r   r   r   r   	FakeImage   s   rk   )io rh   ri   r?   r   r   JpegImageFilegetZTiffImageFiler/   rH   ZIPTC_NAA_CHUNKAttributeErrorrE   	__class__BytesIOr(   rN   
IndexError)r[   rl   rh   ri   datarj   rk   r   r   r   getiptcinfo   s4    
ru   )rU   rS   rm   r   r   _binaryr   r   r-   r   r   r   rD   r   r   r   r   register_openrf   register_extensionru   r   r   r   r   <module>   s   
|