
    .~h                     $   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  Zd Zd Z G d dej                        Z ej"                  ej$                  e        ej&                  ej$                  d       d Zy)    N   )Image	ImageFile)i8)i16be)i32be)o8rawjpeg)r         c                 ,    t        t        | z   dd        S )N)i32PAD)cs    \/var/www/peopleoo.sandbox-dev.co.uk/venv/lib/python3.12/site-packages/PIL/IptcImagePlugin.pyir   #   s    a~    c                 X    | D ]  }t        dt        |      z  d        t                y )Nz%02x )end)printr   )r   r   s     r   dumpr   '   s(     'fr!un#&'	Gr   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)IptcImageFileIPTCzIPTC/NAAc                 2    t        | j                  |         S )N)r   info)selfkeys     r   getintzIptcImageFile.getint6   s    3  r   c                 l   | j                   j                  d      }|j                  d      sy|d   |d   f}|d   dk7  s|d   dvrd	}t        |      |d
   }|dkD  rd}t	        |      |dk(  rd}||fS |dkD  r+t        | j                   j                  |dz
              }||fS 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sizes        r   fieldzIptcImageFile.field9   s     GGLLOwwwdAaDj Q44<3q6)II)Cc"" t#:9C#,S[D Dy CZTWW\\$*-.D Dy q!9DDyr   c                    	 | j                   j                         }| j                         \  }}|r|dk(  rn|r| j                   j                  |      }nd }|| j                  v r[t        | j                  |   t              r| j                  |   j                  |       n.| j                  |   |g| j                  |<   n|| j                  |<   t        | j                  d   d         }t        | j                  d   d         }d| j                  v rt        | j                  d   d         dz
  }nd}|dk(  r
|sd| _	        n#|dk(  r|rd|   | _	        n|d	k(  r|r
d
|   | _	        | j                  d      | j                  d      f| _        	 t        | j                  d         }|dk(  r,d||fdd| j                  d   | j                  d   ffg| _        y y # t        $ r}	d}
t        |
      |	d }	~	ww xY w)Nr*   
   )r'   <   r   r   )r'   A   Lr'   RGBr   CMYK)r'      )r'      )r'   x   zUnknown IPTC image compressioniptc)r/   tellr9   r0   r   
isinstancelistappendr   _moder"   _sizeCOMPRESSIONKeyErrorr3   r8   tile)r    offsetr6   r8   tagdatalayers	componentidcompressioner7   s              r   _openzIptcImageFile._openU   s   WW\\^F

IC#.'',,t,diidiind3IIcN))'2&*iing%>DIIcN!(		# $ DIIg&q)*tyy)!,-	diiDIIg&q)*Q.BBQ;yDJq[YrDJq[YDJ [[)4;;w+??
	&%dkk(&;<K '>+v.Atyy|TYYq\0RSDI   	&2C#,A%	&s   G 	G5"G00G5c                    t        | j                        dk7  s| j                  d   d   dk7  rt        j                  j                  |       S | j                  d   \  }}}|\  }}| j                  j                  |       t        j                  d      \  }}t        j                  |      }|dk(  r|j                  d| j                  z         	 | j                         \  }}	|dk7  rnS|	dkD  rM| j                  j                  t        |	d	            }
|
sn%|j                  |
       |	t        |
      z  }	|	dkD  rMl|j                          	 t!        j"                  |      5 }|j                          |j$                  | _        d d d        	 t        j&                  |       y # 1 sw Y    xY w# t(        $ r Y y w xY w# 	 t        j&                  |       w # t(        $ r Y w w xY wxY w)
Nr   r   rE   F)textr
   zP5
%d %d
255
r;   i    )lenrN   r   loadr/   seektempfilemkstemposfdopenwriter8   r9   r0   mincloser   openimunlinkr3   )r    typerN   boxencodingrO   o_fdoutfileor8   r5   _ims               r   rZ   zIptcImageFile.load   s   tyy>Q$))A,q/V";&&++D11))A,dC&V !((e4gIIdOu GG&23JD$w(GGLLT41
A (	  	
		G$ !
&&!		'"! !  		'" sZ   G  $"F%G  F1 %F.*G  1	F=<F= G'GG'	G$!G'#G$$G'N)	__name__
__module____qualname__formatformat_descriptionr"   r9   rV   rZ    r   r   r   r   2   s"    F#!8/b%r   r   z.iimc                 p   ddl }ddlm}m} d}t	        | t
              r| j                  S t	        | |j                        r/| j                  j                  d      }|rL|j                  d      }n:t	        | |j                        r$	 | j                  j                  |j                     }|y G d d      } |       } t
        | _        i | _        |j!                  |      | _        	 | j%                          | j                  S # t        t        f$ r Y jw xY w# t&        t        f$ r Y | j                  S w xY w)	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                       e Zd Zy)getiptcinfo.<locals>.FakeImageN)rm   rn   ro   rr   r   r   	FakeImagerx      s    r   ry   )io rt   ru   rG   r   r   JpegImageFilegetTiffImageFiler6   rP   IPTC_NAA_CHUNKAttributeErrorrM   	__class__BytesIOr/   rV   
IndexError)rd   rz   rt   ru   datarv   ry   s          r   getiptcinfor      s    2D"m$ww	B55	6GGKK,	==(D	B55	6	66>>/"@"@AD |  
B BL BGJJtBE

 77N- ) 		& ! 77Ns$   #D 'D DDD54D5)r^   r\   r{   r   r   _binaryr   r   r4   r   r   r	   rL   r   r   r   r   register_openrp   register_extensionr   rr   r   r   <module>r      s   " 
    ! ! F#eaiyI'' yx   M((- 8   --v 63r   