
     fF'                    &   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 ddlmZmZ d/d
Zg dZd0dZd1dZ G d dej                  Zd2d3dZd4dZd5d Zd5d!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d'e!j                     ed(e!j"                     ed)e!j#                     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 )6    )annotationsN)IOTYPE_CHECKINGAnyTuplecast   )Image	ImageFilefr   returnintc                l    	 t          |           }| |z
  dk    rdS dS # t          t          f$ r Y dS w xY w)Nr   r	   )r   
ValueErrorOverflowError)r   is     X/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/PIL/SpiderImagePlugin.pyisIntr   -   sP    FFq5A::11&   qqs    33)r	      iiiittuple[float, ...]c                   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)r   hr   iformlabreclabbytlenbyts          r   isSpiderHeaderr'   A   s    	A&  QqT{{ 	11	 !IIEFq2ZZF2ZZF2ZZF&6/""qM    filenamestrc                   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'   )r)   fpr   r   hdrlens        r   isSpiderImager4   U   s    	h		 GGBKK              fa  AAF{{M&!$$""Ms   377c                      e Zd ZdZdZdZddZedd            Zedd
            Z	ddZ
ddZdddZerddlmZ ddZdS )SpiderImageFileSPIDERzSpider 2D imageFr   Nonec                   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   )r2   r/   	bigendianr0   r1   r'   SyntaxErrorerrorr   _sizeistack	imgnumber_nimagesimgbytesr3   	stkoffsetrawmode_modesizetile_fp)
selfnr   r   r3   msger"   r#   offsets
             r   _openzSpiderImageFile._opene   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r   c                    | j         S NrH   rP   s    r   n_frameszSpiderImageFile.n_frames   s
    }r(   boolc                    | j         dk    S Nr	   rX   rY   s    r   is_animatedzSpiderImageFile.is_animated   s    }q  r(   c                0    | j         dk     rdS | j         dz
  S )Nr	   r   )rG   rY   s    r   tellzSpiderImageFile.tell   s!    >A1>A%%r(   framec                (   | 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)
rF   EOFError_seek_checkr3   rI   rJ   rO   r2   seekrU   )rP   ra   rR   s      r   re   zSpiderImageFile.seek   s    ;!7C3--&& 	Fudm0K'LL(T^$$$

r(      depthImage.Imagec                @   |                                  }t          |d         t                    sJ t          t          t          t          f         |          \  }}d||k    r|||z
  z   |z  |                     fd                              d          S )Nr   r	   c                    | z  z   S rW    )r   bms    r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAI r(   L)
getextrema
isinstancefloatr   r   pointconvert)rP   rg   extremaminimummaximumrl   rm   s        @@r   convert2bytezSpiderImageFile.convert2byte   s    //##'!*e,,,,,eUl 3W==g7*+ABLzz-----..66s;;;r(   r	   ImageTkImageTk.PhotoImagec                `    ddl m} |                    |                                 d          S )Nr	   ry      )palette) rz   
PhotoImagerx   )rP   rz   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s9    !!$"3"3"5"5s!CCCr(   N)r   r8   )r   r   )r   r[   )ra   r   r   r8   )rf   )rg   r   r   rh   )r   r{   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrU   propertyrZ   r^   r`   re   rx   r   r   rz   r   rk   r(   r   r6   r6   `   s        F*(-%9 9 9 9v    X ! ! ! X!& & & &	 	 	 	< < < < <  D D D D D Dr(   r6   filelistlist[str] | Nonelist[SpiderImageFile] | Nonec                   | 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           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.   rx   	Exceptionr4   infoappend)r   imglistimgims       r   loadImageSeriesr      sE   3x==1,,tG  w~~c"" 	)C))***	C 'B__&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 	 	 	 %% ;999:::H	 "
rNs6   B%B:BB
	
BB
	B+C ?C r   rh   list[bytes]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 )Nr=   i   r   r	   r    g        g      ?r   r   r   r   r   r   c                8    g | ]}t          j        d |          S )r   )r0   pack).0vs     r   
<listcomp>z$makeSpiderHeader.<locals>.<listcomp>	  s$    ---AFKQ---r(   )rM   r   rr   r   )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(   r2   	IO[bytes]str | bytesr8   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   r?   r}   zError creating Spider headerzF;32NFr@   rA   r	   )	modert   r   r   OSError
writelinesr   _saverM   )r   r2   r)   r   rR   rK   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          |t                    r|                                n|}t          j        t          j	        |           t          | ||           d S r]   )r   r   splitextrq   bytesdecoder
   register_extensionr6   r   r   )r   r2   r)   filename_extexts        r   _save_spiderr     so    7##H--a0L#-lE#B#B
T,




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 )r   r   r   r   )r   r   r   r   )r)   r*   r   r   rW   )r   r   r   r   )r   rh   r   r   )r   rh   r2   r   r)   r   r   r8   ),
__future__r   r   r0   systypingr   r   r   r   r   r   r
   r   r   r!   r'   r4   r6   r   r   r   r   register_openr   register_saver   r   argvr   exitr)   r.   r   rM   r   rp   outfile	transpose	TransposeFLIP_LEFT_RIGHTr   basenamesaverk   r(   r   <module>r      s  F # " " " " " 				  



 6 6 6 6 6 6 6 6 6 6 6 6 6 6            
$	#	#   (   lD lD lD lD lDi) lD lD lDh    4. . . .<M 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nnn$$$%%% rw  !!! 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    C7HHH