
    1)i%                       d dl mZ d dlmZ d dlmZ ddlmZmZ ddl	m
Z ddl	mZ dd	d
ZddZ G d dej                        Z ej"                  ej$                  e        ej&                  ej$                  d       	 	 	 	 ddZy)    )annotations)BytesIO)cast   )Image	ImageFile)i16be)i32berawjpeg)r      c                $    t        d| z   dd        S )Ns       )i32)cs    W/var/www/html/spbu.com/backend/venv/lib/python3.12/site-packages/PIL/IptcImagePlugin.py_ir   !   s    a%&&    c                  4    e Zd ZdZdZddZd	dZd
dZddZy)IptcImageFileIPTCzIPTC/NAAc                2    t        | j                  |         S )N)r   info)selfkeys     r   getintzIptcImageFile.getint.   s    $))C.!!r   c                   | j                   J | 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            	      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.field1   s     ww"""GGLLOwwwdAaDj Q44<3q6)II)Cc"" t#:9C#,S[D Dy CZdggll4#:./D Dy q!9DDyr   c                   | j                   J 	 | 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                  |<   | j                  d   d   }| j                  d   d   }|dk(  r|s
d| _        d }nC|dk(  r
|rd| _        n|dk(  r	|rd	| _        d
| j                  v r| j                  d
   d   dz
  }nd}| j                  d      | j                  d      f| _
        	 t        | j                  d         }|dk(  r.t        j                  dd| j                   z   |||f      g| _        y y # t        $ r}	d}
t        |
      |	d }	~	ww xY w)Nr%   
   )r!   <   r   r   Lr!   RGBr"   CMYK)r!   A   )r!      )r!      )r!   x   zUnknown IPTC image compressioniptc)r   r   )r*   tellr4   r+   r   
isinstancelistappend_moder   _sizeCOMPRESSIONKeyErrorr.   r   _Tiler3   tile)r   offsetr1   r3   tagdatalayers	componentbandcompressioner2   s              r   _openzIptcImageFile._openN   s   ww"""WW\\^F

IC#.'',,t,diidiind3IIcN))'2&*iing%>DIIcN!(		# $ 7#A&IIg&q)	Q;yDJD{y"
1#
$))#yy)!,q0 [[)4;;w+??
	&%dkk(&;<K '>(:F[RVDWXDI   	&2C#,A%	&s   >G
 
	G&G!!G&c                   | j                   r| j                   d   j                  }t        |t              sJ |\  }}| j                  J | j                  j                  | j                   d   j                         t               }|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Mlt        j                  |      5 }|gt        j                   d|j                        gt        j"                  | j$                        z  }	||	|<   t        j&                  | j$                  |	      }
n|}
|
j)                          |
j*                  | _        d d d        g | _         t,        j,                  j)                  |       S # 1 sw Y   /xY w)Nr   r   s   P5
%d %d
255
r6   i    r9   )rJ   argsrB   tupler*   seekrK   r   writer3   r4   r+   minlenr   opennewgetmodebandsmodemergeloadimr   )r   rT   rP   rO   otyper3   r0   _imbandsr`   s              r   r_   zIptcImageFile.load   s   9999Q<$$DdE*** $K77&&&GGLL1,,- 	Ae# +dii78!ZZ\
d7?QhSt_5AGGAJCFND Qh	  A##"YYsCHH569K9KDII9VVE"%E$KTYY6BBGGI%%  DI""''-- s   -BG((G1N)r   ztuple[int, int]returnint)re   z"tuple[tuple[int, int] | None, int])re   None)re   zImage.core.PixelAccess | None)	__name__
__module____qualname__formatformat_descriptionr   r4   rR   r_    r   r   r   r   *   s"    F#":2h$.r   r   z.iimc                >   ddl m}m} d}t        | t              r?| j
                  j                         D ci c]  \  }}t        |t              s|| c}}S t        | |j                        r/| j
                  j                  d      }|rL|j                  d      }n:t        | |j                        r$	 | j                  j                  |j                     }|y G d d      } |       }t        |_        t!        t        |      }	i |	_        t#        |      |	_        	 |	j'                          |	j
                  j                         D ci c]  \  }}t        |t              s|| c}}S c c}}w # t        $ r Y w xY w# t(        t        f$ r Y ew xY wc c}}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   )JpegImagePluginTiffImagePluginN	photoshopi  c                      e Zd Zy)getiptcinfo.<locals>.FakeImageN)rh   ri   rj   rm   r   r   	FakeImagers      s    r   rt   ) ro   rp   rB   r   r   itemsrU   JpegImageFilegetTiffImageFiletag_v2_tagdataIPTC_NAA_CHUNKrH   	__class__r   r   r*   rR   
IndexError)
r`   ro   rp   datakvrq   rt   fake_imiptc_ims
             r   getiptcinfor      sj    3D"m$!#IAJq%4H1II	B55	6GGKK,	==(D	B55	6	99%%o&D&DED |  kG%G='*G GLGJ %\\//1J1TQZ55IAqD1JJI J  		( !  Ks;   E/E/6#E5  F F&F5	F FFFN)r   bytesre   rf   )r`   zImageFile.ImageFilere   z1dict[tuple[int, int], bytes | list[bytes]] | None)
__future__r   ior   typingr   ru   r   r   _binaryr	   r/   r
   r   rG   r   r   register_openrk   register_extensionr   rm   r   r   <module>r      s   " #    ! !F#'|.I'' |.~   M((- 8   --v 64K4K64Kr   