
    h	(                    f   S SK Jr  S SKrS SKrS SKrS SKJrJrJr  SSK	J
r
Jr  SSKJr  SrSS jr/ S	QrS S
 jrS!S jr " S S\R                  5      rS"S#S jjrS$S jrS%S jrS%S jr\
R0                  " \R2                  \5        \
R4                  " \R2                  \5        \S:X  Gau  \" \R:                  5      S:  a  \" S5        \R>                  " 5         \R:                  S   r \" \ 5      (       d  \" S5        \R>                  " 5         \
RB                  " \ 5       r"\" S\" 35        \" S\"R2                   35        \" S\"RF                   35        \" S\"RH                   35        \" SSS9  \" \"RK                  5       5        \" \R:                  5      S:  ax  \R:                  S   r&\"RO                  \
RP                  RR                  5      r"\" S\RT                  RW                  \ 5       S\& S35        \"RY                  \&\R2                  5        SSS5        gg! , (       d  f       g= f)&    )annotationsN)IOAnycast   )Image	ImageFile)DeferredErrorFc                Z     [        U 5      nX-
  S:X  a  gg! [        [        4 a     gf = f)Nr   r   )int
ValueErrorOverflowError)fis     G/var/www/html/env/lib/python3.13/site-packages/PIL/SpiderImagePlugin.pyisIntr   0   s6    F5A:& s    **)r      iiiic                    SU -   nS H  n[        X   5      (       a  M    g   [        US   5      nU[        ;  a  g[        US   5      n[        US   5      n[        US   5      nXTU-  :w  a  gU$ )Nc   )r                     r   r   r   r   r   )r   r   iforms)thr   iformlabreclabbytlenbyts          r   isSpiderHeaderr$   D   sv    	A&QT{{ ' !IEF2ZF2ZF2ZF6/"M    c                   [        U S5       nUR                  S5      nS S S 5        [        R                  " SW5      n[	        U5      nUS:X  a"  [        R                  " SU5      n[	        U5      nU$ ! , (       d  f       NZ= f)Nrb\   z>23fr   z<23f)openreadstructunpackr$   )filenamefpr   r   hdrlens        r   isSpiderImager0   X   si    	h	GGBK 
fa AAF{MM&!$"M 
	s   A33
Bc                      \ rS rSrSrSrSrSS jr\SS j5       r	\SS j5       r
SS jrSS	 jrSSS
 jjr\(       a  SSKJr  SS jrSrg)SpiderImageFiler   SPIDERzSpider 2D imageFc                   SnU R                   R                  U5      n SU l        [        R                  " SU5      n[        U5      nUS:X  a)  SU l        [        R                  " SU5      n[        U5      nUS:X  a  Sn[        U5      e SU-   n[        US   5      nUS:w  a  S	n[        U5      e[        US
   5      [        US   5      4U l	        [        US   5      U l
        [        US   5      U l        U R                  S:X  a  U R                  S:X  a
  Un	SU l        OU R                  S:  a[  U R                  S:X  aK  [        US
   5      [        US   5      -  S-  U l        X@l        [        US   5      U l        US-  n	SU l        OCU R                  S:X  a&  U R                  S:  a  X@R                  -   n	SU l
        OSn[        U5      eU R                  (       a  SU l        OSU l        SU l        [$        R&                  " SSU R(                  -   XR                   5      /U l        U R                   U l        g ! [        R                   a  nSn[        U5      UeS nAff = f)Nl   r   z>27fr   z<27fznot a valid Spider filer   r   znot a Spider 2D imager   r               z inconsistent stack header valueszF;32BFzF;32FFrawr   r   )r.   r*   	bigendianr+   r,   r$   SyntaxErrorerrorr   _sizeistack	imgnumber_nimagesimgbytesr/   	stkoffsetrawmode_moder	   _Tilesizetile_fp)
selfnr   r   r/   msger   r    offsets
             r   _openSpiderImageFile._openh   s   GGLLO	*DNfa(A#A&F{!"MM&!,'*{/!#&&  AIAaD	A:)Cc""2ZQqT*
!B%jQrU;;!! 3FDM[[1_1!4"JQqT2Q6DM K"JDMaZFDN[[A$..1"4nn,FDK4Cc"">>#DL"DL
__UFTYY,>UV	77S || 	*+Cc")	*s   A+H> >I%I  I%c                    U R                   $ NrC   rL   s    r   n_framesSpiderImageFile.n_frames   s    }}r%   c                     U R                   S:  $ Nr   rU   rV   s    r   is_animatedSpiderImageFile.is_animated   s    }}q  r%   c                B    U R                   S:  a  gU R                   S-
  $ )Nr   r   )rB   rV   s    r   tellSpiderImageFile.tell   s     >>A>>A%%r%   c                   U R                   S:X  a  Sn[        U5      eU R                  U5      (       d  g [        U R                  [
        5      (       a  U R                  R                  eU R                  XR                  U R                  -   -  -   U l	        U R                  U l
        U R                  R                  U R                  5        U R                  5         g )Nr   z#attempt to seek in a non-stack file)rA   EOFError_seek_check
isinstancerK   r
   exr/   rD   rE   r.   seekrQ   )rL   framerN   s      r   re   SpiderImageFile.seek   s    ;;!7C3-&&dhh..((++udmm0K'LL((T^^$

r%   c                
  ^^ U R                  5       n[        US   [        5      (       d   e[        [        [        [        4   U5      u  p4SmXC:w  a  XU-
  -  mT* U-  mU R                  UU4S j5      R                  S5      $ )Nr   r   c                   > U T-  T-   $ rT    )r   bms    r   <lambda>.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAIr%   L)
getextremarc   floatr   tuplepointconvert)rL   depthextremaminimummaximumrk   rl   s        @@r   convert2byteSpiderImageFile.convert2byte   s|    //#'!*e,,,,eUl 3W=7*+ABLzz-.66s;;r%   r   ImageTkc                J    SSK Jn  UR                  U R                  5       SS9$ )Nr   r{      )palette) r|   
PhotoImagery   )rL   r|   s     r   tkPhotoImageSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr%   )rK   rG   rC   r@   r=   r.   r/   rD   rB   rA   rF   rE   rJ   N)returnNone)r   r   )r   bool)rf   r   r   r   )   )ru   r   r   Image.Image)r   zImageTk.PhotoImage)__name__
__module____qualname____firstlineno__formatformat_description!_close_exclusive_fp_after_loadingrQ   propertyrW   r[   r^   re   ry   TYPE_CHECKINGr   r|   r   __static_attributes__rj   r%   r   r2   r2   c   s^    F*(-%9v   ! !&< Dr%   r2   c                   U b  [        U 5      S:  a  g/ nU  H  n[        R                  R                  U5      (       d  [	        SU 35        M7   [
        R                  " U5       n[        U[        5      (       d   eUR                  5       nSSS5        UWR                  S'   UR                  U5        M     U$ ! , (       d  f       N4= f! [         a"    [        U5      (       d  [	        U S35         M  f = f)zJcreate a list of :py:class:`~PIL.Image.Image` objects for use in a montageNr   zunable to find z is not a Spider image filer-   )lenospathexistsprintr   r)   rc   r2   ry   	Exceptionr0   infoappend)filelist	byte_imgsimgimbyte_ims        r   loadImageSeriesr      s    3x=1,Iww~~c""OC5)*	CB!"o6666//+ ! $'Z !   !  	 %%89:	s0   C&(B<C<
C
	C
C(C98C9c                   U R                   u  pUS-  n[        SU-  5      nSU-  S:w  a  US-  nXC-  n[        US-  5      nUS:  a  / $ S/U-  nSUS'   [        U5      US'   [        U5      US	'   SUS
'   [        U5      US'   [        U5      US'   [        U5      US'   [        U5      US'   USS  nUR                  S5        U Vs/ s H  n[        R
                  " SU5      PM     sn$ s  snf )Nr8   i   r   r   r   g        g      ?r   r   r   r   r   r   r   )rI   r   rq   r   r+   pack)	r   nsamnrowr#   r!   r"   nvalueshdrvs	            r   makeSpiderHeaderr      s   JDAXFFf}!_F&1*oG|	%'/C CF4[CF4[CFCFDkCGFmCGFmCGFmCG ab'CJJsO),-AFKKQ---s   !C,c           
     2   U R                   S:w  a  U R                  S5      n [        U 5      n[        U5      S:  a  Sn[	        U5      eUR                  U5        Sn[        R                  " X[        R                  " SSU R                  -   SU5      /5        g )Nr:   r~   zError creating Spider headerzF;32NFr;   r<   r   )
modert   r   r   OSError
writelinesr	   _saverH   rI   )r   r.   r-   r   rN   rF   s         r   r   r     sz    	ww#~ZZ_
2
C
3x#~,cl MM#GOOBY__UFRWW4DaQRSr%   c                    [         R                  R                  U5      S   n[        U[        5      (       a  UR                  5       OUn[        R                  " [        R                  U5        [        XU5        g rZ   )r   r   splitextrc   bytesdecoder   register_extensionr2   r   r   )r   r.   r-   filename_extexts        r   _save_spiderr   "  sW    77##H-a0L#-lE#B#B,


C	_33S9	"(r%   __main__r   z7Syntax: python3 SpiderImagePlugin.py [infile] [outfile]z$input image must be in Spider formatzimage: zformat: zsize: zmode: z
max, min:  )endzsaving a flipped version of z as )r   r   r   r   )r   ztuple[float, ...]r   r   )r-   strr   r   rT   )r   zlist[str] | Noner   zlist[Image.Image] | None)r   r   r   zlist[bytes])r   r   r.   z	IO[bytes]r-   zstr | bytesr   r   )-
__future__r   r   r+   systypingr   r   r   r   r   r	   _utilr
   r   r   r   r$   r0   r2   r   r   r   r   register_openr   register_saver   r   argvr   exitr-   r)   r   rI   r   rp   outfile	transpose	TransposeFLIP_LEFT_RIGHTr   basenamesaverj   r%   r   <module>r      s  F # 	  
        
$(nDi)) nDl6.<T    O**O <   O**L 9z
388}qGH
xx{H""45
	H	tn$%rwwi !rwwi !l$bmmosxx=1hhqkG eoo==>B.rww/?/?/I.J KYa! GGG_334# 
	  
	s   "C6H""
H0