
    ]Hj6(                    b   S SK Jr  S SKrS SKrS SKrS SK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\	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\RT                  RW                  \5       S\% S35        \)RY                  \%\R0                  5        SSS5        gg! , (       d  f       g= f)&    )annotationsN)IOAny   )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     W/Users/admin/workspace/tools/venv/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   isSpiderImager/   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                   c   e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'   ww"""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+I I4!I//I4c                    U R                   $ NrB   rK   s    r   n_framesSpiderImageFile.n_frames   s    }}r$   c                     U R                   S:  $ Nr   rT   rU   s    r   is_animatedSpiderImageFile.is_animated   s    }}q  r$   c                B    U R                   S:  a  gU R                   S-
  $ )Nr   r   )rA   rU   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)r@   EOFError_seek_check
isinstancerJ   r	   exr.   rC   rD   r-   seekrP   )rK   framerM   s      r   rd   SpiderImageFile.seek   s    ;;!7C3-&&dhh..((++udmm0K'LL((T^^$

r$   c                   ^^ U R                  5       n[        US   [        5      (       d   eU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-   $ rS    )r   bms    r   <lambda>.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAIr$   L)
getextremarb   floatpointconvert)rK   depthextremaminimummaximumrj   rk   s        @@r   convert2byteSpiderImageFile.convert2byte   sl    //#'!*e,,,,"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   ry      )palette) rz   
PhotoImagerw   )rK   rz   s     r   tkPhotoImageSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr$   )rJ   rF   rB   r?   r<   r-   r.   rC   rA   r@   rE   rD   rI   N)returnNone)r   r   )r   bool)re   r   r   r   )   )rs   r   r   Image.Image)r   zImageTk.PhotoImage)__name__
__module____qualname____firstlineno__formatformat_description!_close_exclusive_fp_after_loadingrP   propertyrV   rZ   r]   rd   rw   TYPE_CHECKINGr~   rz   r   __static_attributes__ri   r$   r   r1   r1   c   s^    F*(-%:x   ! !&< Dr$   r1   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(   rb   r1   rw   	Exceptionr/   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[        SU5      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   r7   i   r   r   g        g      ?r   r   r   r   r   r   r   )rH   maxr   rp   r   r*   pack)	r   nsamnrowr"   r    r!   nvalueshdrvs	            r   makeSpiderHeaderr      s   JDD\AF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   !C6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 )Nr9   r|   zError creating Spider headerzF;32NFr:   r;   r   )
moderr   r   r   OSError
writelinesr   _saverG   rH   )r   r-   r,   r   rM   rE   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(       aL  [        U[        5      (       a  UR                  5       OUn[        R                  " [        R                  U5        [        XU5        g rY   )r   r   splitextrb   bytesdecoder   register_extensionr1   r   r   )r   r-   r,   filename_extexts        r   _save_spiderr   #  s]    ww''1!44|4'1,'F'Fl!!#L  !7!7=	"(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   rS   )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   _utilr	   r   r   r   r#   r/   r1   r   r   r   r   register_openr   register_saver   r   argvr   exitr,   r(   r   rH   r   ro   outfile	transpose	TransposeFLIP_LEFT_RIGHTtransposed_imr   basenamesaveri   r$   r   <module>r      s  F # 	  
     
$(oDi)) oDn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 LL)H)HIM.rww/?/?/I.J KYa! w(>(>?# 
	  
	s    C6H  
H.