
    (phF'                    ^   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J	r	J
r
  SSKJrJ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\R.                  " \R0                  \5        \R2                  " \R0                  \5        \S:X  Gau  \" \R8                  5      S:  a  \" S5        \R<                  " 5         \R8                  S   r\" \5      (       d  \" S5        \R<                  " 5         \R@                  " \5       r!\" S\! 35        \" S\!R0                   35        \" S\!RD                   35        \" S\!RF                   35        \" SSS9  \" \!RI                  5       5        \" \R8                  5      S:  ax  \R8                  S   r%\!RM                  \RN                  RP                  5      r!\" S\RR                  RU                  \5       S\% S35        \!RW                  \%\R0                  5        SSS5        gg! , (       d  f       g= f)$    )annotationsN)IOTYPE_CHECKINGAnyTuplecast   )Image	ImageFilec                Z     [        U 5      nX-
  S:X  a  gg! [        [        4 a     gf = f)Nr   r	   )int
ValueErrorOverflowError)fis     H/var/www/html/venv/lib/python3.13/site-packages/PIL/SpiderImagePlugin.pyisIntr   -   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%   A   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   isSpiderImager1   U   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)SpiderImageFile`   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        SSU R$                  -   XR                   SS44/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imgbytesr0   	stkoffsetrawmode_modesizetile_fp)
selfnr   r   r0   msger    r!   offsets
             r   _openSpiderImageFile._opene   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
Vdii/,,19MNO	77S || 	*+Cc")	*s   A+H. .IIIc                    U R                   $ NrE   rM   s    r   n_framesSpiderImageFile.n_frames   s    }}r&   c                     U R                   S:  $ Nr	   rV   rW   s    r   is_animatedSpiderImageFile.is_animated   s    }}q  r&   c                B    U R                   S:  a  gU R                   S-
  $ )Nr	   r   )rD   rW   s    r   tellSpiderImageFile.tell   s     >>A>>A%%r&   c                R   U R                   S:X  a  Sn[        U5      eU R                  U5      (       d  g 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)
rC   EOFError_seek_checkr0   rF   rG   rL   r/   seekrR   )rM   framerO   s      r   rd   SpiderImageFile.seek   sy    ;;!7C3-&&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-   $ rU    )r   bms    r   <lambda>.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAIr&   L)
getextrema
isinstancefloatr   r   pointconvert)rM   depthextremaminimummaximumrj   rk   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	   rz      )palette) r{   
PhotoImagerx   )rM   r{   s     r   tkPhotoImageSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr&   )rL   rI   rE   rB   r?   r/   r0   rF   rD   rC   rH   rG   rK   N)returnNone)r   r   )r   bool)re   r   r   r   )   )rt   r   r   Image.Image)r   zImageTk.PhotoImage)__name__
__module____qualname____firstlineno__formatformat_description!_close_exclusive_fp_after_loadingrR   propertyrX   r\   r_   rd   rx   r   r   r{   r   __static_attributes__ri   r&   r   r3   r3   `   s^    F*(-%9v   ! !&	< Dr&   r3   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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*   rx   	Exceptionr1   infoappend)filelistimglistimgims       r   loadImageSeriesr      s    3x=1,Gww~~c""OC5)*	CB__& ! "
r  N ! 	 %%89:	s0   B6&B%7B6%
B3	/B63B66(C"!C"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 )Nr:   i   r   r	   r   g        g      ?r   r   r   r   r   r   r   )rJ   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           
        U R                   S   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SSU R                  -   SUSS44/5        g )	Nr   r<   r}   zError creating Spider headerzF;32NFr=   r>   r	   )	moders   r   r   OSError
writelinesr   _saverJ   )r   r/   r.   r   rO   rH   s         r   r   r     s    	wwqzSZZ_
2
C
3x#~,cl MM#GOOBeVbgg%5q7Aq/JKLr&   c                    [         R                  R                  U5      S   n[        U[        5      (       a  UR                  5       OUn[        R                  " [        R                  U5        [        XU5        g r[   )r   r   splitextrp   bytesdecoder
   register_extensionr3   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   rU   )r   zlist[str] | Noner   zlist[SpiderImageFile] | 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   r
   r   r   r   r%   r1   r3   r   r   r   r   register_openr   register_saver   r   argvr   exitr.   r*   r   rJ   r   ro   outfile	transpose	TransposeFLIP_LEFT_RIGHTr   basenamesaveri   r&   r   <module>r      s  F # 	  
 6 6  
$(lDi)) lDh4.<M    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
H,