
    &Th$                     4   d dl Z d dlZd dlZddlmZmZ d Zg dZd Zd Z	 G d d	ej
                        Z
dd
Zd Zd Zd Z ej                  e
j                   e
        ej"                  e
j                   e       edk(  r eej(                        dk  r ed        ej,                          ej(                  d   Z e	e      s ed        ej,                           ej0                  e      5 Z ed ee      z           ed eej                         z           ed eej6                        z           ed eej8                        z           edd        eej;                                 eej(                        dkD  rxej(                  d   Zej?                  ej@                  jB                        Z ede jD                  jG                  e       de d       ejI                  ee
j                          ddd       yy# 1 sw Y   yxY w)    N   )Image	ImageFilec                 X    	 t        |       }| |z
  dk(  ryy# t        t        f$ r Y yw xY w)Nr   r   )int
ValueErrorOverflowError)fis     ]/home/stella.sw7ft.com/public_html/venv/lib/python3.12/site-packages/PIL/SpiderImagePlugin.pyisIntr   *   s8    Fq5A:& s    )))r      iiiic                     d| z   }dD ]  }t        ||         r y t        |d         }|t        vryt        |d         }t        |d         }t        |d         }|||z  k7  ry|S )Nc   )r                     r   r   r   r   r   )r   r   iforms)thr   iformlabreclabbytlenbyts          r   isSpiderHeaderr   >   s}    	A& QqT{ !IEF2ZF2ZF2ZF&6/"M    c                     t        | d      5 }|j                  d      }d d d        t        j                  d      }t	        |      }|dk(  r!t        j                  d|      }t	        |      }|S # 1 sw Y   RxY w)Nrb\   z>23fr   z<23f)openreadstructunpackr   )filenamefpr
   r   hdrlens        r   isSpiderImager+   R   sp    	h	 GGBKfa AAF{MM&!$"M s   A00A9c                   X    e Zd ZdZdZdZd Zed        Zed        Z	d Z
d Zdd	Zd
 Zy)SpiderImageFileSPIDERzSpider 2D imageFc                    d}| j                   j                  |      }	 d| _        t        j                  d|      }t        |      }|dk(  r(d| _        t        j                  d|      }t        |      }|dk(  rd}t        |      	 d|z   }t        |d         }|dk7  rd	}t        |      t        |d
         t        |d         f| _	        t        |d         | _
        t        |d         | _        | j                  dk(  r| j                  dk(  r
|}	d| _        n| j                  dkD  r[| j                  dk(  rLt        |d
         t        |d         z  dz  | _        || _        t        |d         | _        |dz  }	d| _        nB| j                  dk(  r&| j                  dkD  r|| j                  z   }	d| _
        nd}t        |      | j                  rd| _        nd| _        d| _        dd| j$                  z   |	| j                   ddffg| _        | j                   | _        y # t        j                  $ r}d}t        |      |d }~ww xY w)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modesizetile_fp)
selfnr
   r   r*   msger   r   offsets
             r   _openzSpiderImageFile._openb   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 DK"JDMaZFDN[[A$..1"4dnn,FDK4Cc"">>#DL"DL	Vdii/$,,19MNO	77S || 	*+Cc")	*s   A'H! !I4IIc                     | j                   S Nr>   rF   s    r   n_frameszSpiderImageFile.n_frames   s    }}r    c                      | j                   dkD  S Nr   rN   rO   s    r   is_animatedzSpiderImageFile.is_animated   s    }}q  r    c                 @    | j                   dk  ry| j                   dz
  S )Nr   r   )r=   rO   s    r   tellzSpiderImageFile.tell   s     >>A>>A%%r    c                 H   | j                   dk(  rd}t        |      | j                  |      sy | j                  || j                  | j                  z   z  z   | _        | j                  | _        | j                  j                  | j
                         | j                          y )Nr   z#attempt to seek in a non-stack file)
r<   EOFError_seek_checkr*   r?   r@   rE   r)   seekrK   )rF   framerH   s      r   rY   zSpiderImageFile.seek   sx    ;;!7C3-&udmm0K'LL((T^^$

r    c                     | j                         \  }}d}||k7  r|||z
  z  }| |z  }| j                  ||fd      j                  d      S )Nr   c                     | |z  |z   S rM    )r   mbs      r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    a!eai r    L)
getextremapointconvert)rF   depthminimummaximumr^   r_   s         r   convert2bytezSpiderImageFile.convert2byte   sY    !__.'g7*+ABLzza178@@EEr    c                 P    ddl m} |j                  | j                         d      S )Nr   )ImageTk   )palette) rj   
PhotoImagerh   )rF   rj   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr    N)   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrK   propertyrP   rS   rU   rY   rh   ro   r]   r    r   r-   r-   ]   sW    F*(-%9v   ! !&	FDr    r-   c                    | t        |       dk  ryg }| D ]  }t        j                  j                  |      st	        d|        1	 t        j                  |      5 }|j                         }ddd       |j                  d<   |j                  |        |S # 1 sw Y   -xY w# t        $ r t        |      st	        |dz          Y w xY w)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$   rh   	Exceptionr+   infoappend)filelistimglistimgims       r   loadImageSeriesr      s    3x=1,G ww~~c"OC5)*	C 'B__&' "
r N' ' 	 %c99:	s*   B&B.B&B#	B&&"C
Cc                    | j                   \  }}|dz  }t        d|z        }d|z  dk7  r|dz  }||z  }t        |dz        }|dk  rg S g }t        |      D ]  }|j                  d        d|d<   t	        |      |d<   t	        |      |d	<   d|d
<   t	        |      |d<   t	        |      |d<   t	        |      |d<   t	        |      |d<   |dd  }|j                  d       |D 	cg c]  }	t        j                  d|	       c}	S c c}	w )Nr3   i   r   r   r   g        g      ?r   r   r   r   r   r   r
   )rC   r   ranger   floatr&   pack)
r   nsamnrowr   r   r   nvalueshdrr   vs
             r   makeSpiderHeaderr      s   JD$AXFFf}!f_F&1*oG|	
C7^ 

3 CF4[CF4[CFCFDkCGFmCGFmCGFmCG ab'CJJsO),-AFKKQ---s   %Dc           
         | j                   d   dk7  r| j                  d      } t        |       }t        |      dk  rd}t	        |      |j                  |       d}t        j                  | |dd| j                  z   d|ddffg       y )	Nr   r5   rk   zError creating Spider headerzF;32NFr6   r7   r   )	rB   rd   r   ry   OSError
writelinesr   _saverC   )r   r)   r(   r   rH   rA   s         r   r   r     s    	wwqzSZZ_
2
C
3x#~,cl MM#GOOBeVbgg%5q7Aq/JKLr    c                     t         j                  j                  |      d   }t        j                  t
        j                  |       t        | ||       y rR   )rz   r{   splitextr   register_extensionr-   rt   r   )r   r)   r(   exts       r   _save_spiderr     s=    
''

8
$Q
'C	_33S9	"b(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 rM   )%rz   r&   sysrm   r   r   r   r   r   r+   r-   r   r   r   r   register_openrt   register_saverq   ry   argvr}   exitr(   r$   r   strrC   rB   rb   outfile	transpose	TransposeFLIP_LEFT_RIGHTr{   basenamesaver]   r    r   <module>r      s  F 
  
  
$(gDi)) gD^4.@M    O**O <   O**L 9z
388}qGH
xx{H"45
	H	 5i#b'!"j3ryy>)*hRWW%&hRWW%&l$bmmosxx=1hhqkG eoo==>B.rww/?/?/I.J KYa! GGG_334#5 5 5 5s   4DHH