a
    ¥Q•h´  ã                   @   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r˜t| 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 rÎt| jd d ƒd }nd}|dkræ|sæd| _	n2|dkrþ|rþd| | _	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�r¦d||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r˜qÒ|	dkr‚| j t|	d	ƒ¡}
|
s¸q‚| 
|
¡ |	t |
ƒ8 }	q˜q‚| ¡  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	ƒrŠz| j
j|j }W n ttfyˆ   Y n0 |du r–d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   
|