
    Rf$                    D   d dl mZ 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j        e          5 Z ed ee          z               ed eej                  z               ed eej                  z               ed eej                  z               edd            ee                                            eej                  dk    rqej        d         Z e!                    ej"        j#                  Z edej$        %                    e           de  d           e&                    e ej                   ddd           dS # 1 swxY w Y   dS dS )    )annotationsN   )Image	ImageFilec                l    	 t          |           }| |z
  dk    rdS dS # t          t          f$ r Y dS w xY w)Nr   r   )int
ValueErrorOverflowError)fis     G/var/www/html/env/lib/python3.11/site-packages/PIL/SpiderImagePlugin.pyisIntr   ,   sP    FFq5A::11&   qqs    33)r      iiiic                   d| z   }dD ]}t          ||                   s dS t          |d                   }|t          vrdS t          |d                   }t          |d                   }t          |d                   }|||z  k    rdS |S )Nc   )r                     r   r   r   r   r   )r   r   iforms)thr   iformlabreclabbytlenbyts          r   isSpiderHeaderr    @   s    	A&  QqT{{ 	11	 !IIEFq2ZZF2ZZF2ZZF&6/""qM    c                   t          | d          5 }|                    d          }d d d            n# 1 swxY w Y   t          j        d|          }t	          |          }|dk    r$t          j        d|          }t	          |          }|S )Nrb\   z>23fr   z<23f)openreadstructunpackr    )filenamefpr   r   hdrlens        r   isSpiderImager,   T   s    	h		 GGBKK              fa  AAF{{M&!$$""Ms   377c                  f    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dS )SpiderImageFileSPIDERzSpider 2D imageFc                   d}| j                             |          }	 d| _        t          j        d|          }t          |          }|dk    r+d| _        t          j        d|          }t          |          }|dk    rd}t          |          n)# t          j        $ r}d}t          |          |d }~ww xY wd|z   }t          |d                   }|dk    rd	}t          |          t          |d
                   t          |d                   f| _	        t          |d                   | _
        t          |d                   | _        | j
        dk    r| j        dk    r
|}	d| _        n| j
        dk    rl| j        dk    rat          |d
                   t          |d                   z  dz  | _        || _        t          |d                   | _        |dz  }	d| _        n9| j
        dk    r| j        dk    r|| j        z   }	d| _
        nd}t          |          | j        rd| _        nd| _        d| _        dd| j        z   |	| j        ddffg| _        | j         | _        d S )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._opend   s`   GLLOO	*DNfa((A#A&&F{{!"M&!,,'**{{/!#&&&  | 	* 	* 	*+Cc"")	* AIAaD		A::)Cc"""2ZZQqT*
!B%jjQrU;!! 3 3FDMM[1__1!4!4"JJQqT2Q6DM DK"JJDMaZFDNN[A$.1"4"4dn,FDKK4Cc"""> 	##DLL"DL
Vdi/$,19MNO	7s   A3B B8!B33B8c                    | j         S Nr?   rG   s    r   n_frameszSpiderImageFile.n_frames   s
    }r!   c                    | j         dk    S Nr   rO   rP   s    r   is_animatedzSpiderImageFile.is_animated   s    }q  r!   c                0    | j         dk     rdS | j         dz
  S )Nr   r   )r>   rP   s    r   tellzSpiderImageFile.tell   s!    >A1>A%%r!   c                (   | j         dk    rd}t          |          |                     |          sd S | j        || j        | j        z   z  z   | _        | j        | _        | j                            | j                   | 	                                 d S )Nr   z#attempt to seek in a non-stack file)
r=   EOFError_seek_checkr+   r@   rA   rF   r*   seekrL   )rG   framerI   s      r   rZ   zSpiderImageFile.seek   s    ;!7C3--&& 	Fudm0K'LL(T^$$$

r!      c                    |                                  \  }}d}||k    r|||z
  z  }| |z  }|                     ||fd                              d          S )Nr   c                    | |z  |z   S rN    )r   mbs      r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    a!eai r!   L)
getextremapointconvert)rG   depthminimummaximumr`   ra   s         r   convert2bytezSpiderImageFile.convert2byte   sk    !__..'g7*+ABLzza177788@@EEEr!   c                `    ddl m} |                    |                                 d          S )Nr   )ImageTk   )palette) rl   
PhotoImagerj   )rG   rl   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s9    !!$"3"3"5"5s!CCCr!   N)r\   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrL   propertyrQ   rT   rV   rZ   rj   rq   r_   r!   r   r.   r.   _   s        F*(-%9 9 9v   X ! ! X!& & &	 	 	F F F FD D D D Dr!   r.   c                   | t          |           dk     rdS g }| D ]}t          j                            |          st	          d|            4	 t          j        |          5 }|                                }ddd           n# 1 swxY w Y   n1# t          $ r$ t          |          st	          |dz              Y w xY w||j
        d<   |                    |           |S )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%   rj   	Exceptionr,   infoappend)filelistimglistimgims       r   loadImageSeriesr      sB   3x==1,,G  w~~c"" 	)C))***	C 'B__&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 	 	 	 %% ;c99:::H	 "
rNs6   B%B:BB
	
BB
	B+C ?C c                   | j         \  }}|dz  }t          d|z            }d|z  dk    r|dz  }||z  }t          |dz            }|dk     rg S dg|z  }d|d<   t          |          |d<   t          |          |d	<   d|d
<   t          |          |d<   t          |          |d<   t          |          |d<   t          |          |d<   |dd          }|                    d           d |D             S )Nr4   i   r   r   r   g        g      ?r   r   r   r   r   r   c                8    g | ]}t          j        d |          S )r   )r'   pack).0vs     r   
<listcomp>z$makeSpiderHeader.<locals>.<listcomp>  s$    ---AFKQ---r!   )rD   r   floatr   )r   nsamnrowr   r   r   nvalueshdrs           r   makeSpiderHeaderr      s   JD$AXFFf}!f_F&1*ooG||	%'/C CF4[[CF4[[CFCFDkkCGFmmCGFmmCGFmmCG abb'CJJsOOO------r!   c           
     2   | j         d         dk    r|                     d          } t          |           }t          |          dk     rd}t	          |          |                    |           d}t          j        | |dd| j        z   d|ddffg           d S )	Nr   r6   rm   zError creating Spider headerzF;32NFr7   r8   r   )	moderf   r   rz   OSError
writelinesr   _saverD   )r   r*   r)   r   rI   rB   s         r   r   r     s    	wqzSZZ__
2

C
3xx#~~,cll MM#GOBeVbg%5q7Aq/JKLLLLLr!   c                    t           j                            |          d         }t          j        t
          j        |           t          | ||           d S rS   )r{   r|   splitextr   register_extensionr.   ru   r   )r   r*   r)   exts       r   _save_spiderr     sJ    
'

8
$
$Q
'C	_3S99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 rN   )'
__future__r   r{   r'   sysro   r   r   r   r   r    r,   r.   r   r   r   r   register_openru   register_saverr   rz   argvr~   exitr)   r%   r   strrD   r   rd   outfile	transpose	TransposeFLIP_LEFT_RIGHTr|   basenamesaver_   r!   r   <module>r      sn  F # " " " " " 				  



           
$	#	#  (  gD gD gD gD gDi) gD gD gD^   4. . .<M M M     O*O < < <  O*L 9 9 9z
s38}}qGHHH


x{H="" 4555


	H		 5i##b''!"""j33ry>>)***hRW%&&&hRW%&&&l$$$$bmmoo3sx==1hqkG eo=>>BE!rw/?/?/I/I ! !! ! !   GGG_3444#5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 s   +DHHH