
    ^j6(                    >   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dlm	Z	m
Z
 ddlmZ dZddZg d	Zd d
Zd!dZ G d de
j                        Zd"d#dZd$dZd%dZd%dZ e	j.                  ej0                  e        e	j2                  ej0                  e       edk(  rq eej8                        dk  r ed        ej<                          ej8                  d   Z ee      s ed        ej<                           e	j@                  e      5 Z! ede!         ede!j0                           ede!jD                           ede!jF                           edd        ee!jI                                 eej8                        dkD  rxej8                  d   Z%e!jM                  e	jN                  jP                        Z) edejT                  jW                  e       de% d       e)jY                  e%ej0                         ddd       yy# 1 sw Y   yxY w)&    )annotationsN)IOAny   )Image	ImageFile)DeferredErrorFc                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     `/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/PIL/SpiderImagePlugin.pyisIntr   0   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#   D   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/   X   sp    	h	 GGBKfa AAF{MM&!$"M s   A00A9c                  v    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y)SpiderImageFileSPIDERzSpider 2D imageFc                   d}| j                   J | 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| _        t%        j&                  dd| j(                  z   |	| j                         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_moder   _Tilesizetile_fp)
selfnr   r   r.   msger   r   offsets
             r   _openz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 DK"JDMaZFDN[[A$..1"4dnn,FDK4Cc"">>#DL"DL
__UFTYY,>UV	77S || 	*+Cc")	*s   A'H> >I$II$c                    | j                   S NrB   rK   s    r   n_frameszSpiderImageFile.n_frames   s    }}r$   c                     | j                   dkD  S Nr   rS   rT   s    r   is_animatedzSpiderImageFile.is_animated   s    }}q  r$   c                @    | j                   dk  ry| j                   dz
  S )Nr   r   )rA   rT   s    r   tellzSpiderImageFile.tell   s     >>A>>A%%r$   c                   | j                   dk(  rd}t        |      | j                  |      sy t        | j                  t
              r| j                  j                  | 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_check
isinstancerJ   r	   exr.   rC   rD   r-   seekrP   )rK   framerM   s      r   r`   zSpiderImageFile.seek   s    ;;!7C3-&dhh.((++udmm0K'LL((T^^$

r$   c                    | j                         }t        |d   t              sJ |\  }}d||k7  r|||z
  z   |z  | j                  fd      j	                  d      S )Nr   r   c                    | z  z   S rR    )r   bms    r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAI r$   L)
getextremar^   floatpointconvert)rK   depthextremaminimummaximumre   rf   s        @@r   convert2bytezSpiderImageFile.convert2byte   so    //#'!*e,,,"g7*+ABLzz-.66s;;r$   r   ImageTkc                P    ddl m} |j                  | j                         d      S )Nr   rr      )palette) rs   
PhotoImagerq   )rK   rs   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr$   N)returnNone)rz   r   )rz   bool)ra   r   rz   r{   )   )rm   r   rz   Image.Image)rz   zImageTk.PhotoImage)__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrP   propertyrU   rX   rZ   r`   rq   TYPE_CHECKINGrw   rs   ry   rd   r$   r   r1   r1   c   s^    F*(-%:x   ! !&< Dr$   r1   c                   | t        |       dk  ryg }| D ]  }t        j                  j                  |      st	        d|        1	 t        j                  |      5 }t        |t              sJ |j                         }ddd       |j                  d<   |j                  |        |S # 1 sw Y   -xY w# t        $ r t        |      st	        | d       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(   r^   r1   rq   	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//+, $'Z !" , ,  	 %89:	s*   B8#B, B8,B5	1B88"CCc                   | j                   \  }}t        d|      dz  }t        d|z        }d|z  dk7  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  }|j	                  d       |D cg c]  }t        j                  d|       c}S c c}w )Nr   r7   i   r   r   g        g      ?r   r   r   r   r   r   r   )rH   maxr   rj   r   r*   pack)	r   nsamnrowr"   r    r!   nvalueshdrvs	            r   makeSpiderHeaderr      s   JD$D\AF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   C2c           
     ,   | j                   dk7  r| j                  d      } t        |       }t        |      dk  rd}t	        |      |j                  |       d}t        j                  | |t        j                  dd| j                  z   d|      g       y )Nr9   ru   zError creating Spider headerzF;32NFr:   r;   r   )
moderl   r   r   OSError
writelinesr   _saverG   rH   )r   r-   r,   r   rM   rE   s         r   r   r     s|    	ww#~ZZ_
2
C
3x#~,cl MM#GOOBY__UFRWW4DaQRSr$   c                    t         j                  j                  |      d   x}rFt        |t              r|j                         n|}t        j                  t        j                  |       t        | ||       y rW   )r   r   splitextr^   bytesdecoder   register_extensionr1   r   r   )r   r-   r,   filename_extexts        r   _save_spiderr   #  s\    ww''1!44|4'1,'Fl!!#L  !7!7=	"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   rz   r   )r   ztuple[float, ...]rz   r   )r,   strrz   r   rR   )r   zlist[str] | Nonerz   zlist[Image.Image] | None)r   r~   rz   zlist[bytes])r   r~   r-   z	IO[bytes]r,   zstr | bytesrz   r{   )-
__future__r   r   r*   systypingr   r   rw   r   r   _utilr	   r   r   r   r#   r/   r1   r   r   r   r   register_openr   register_saver   r   argvr   exitr,   r(   r   rH   r   ri   outfile	transpose	TransposeFLIP_LEFT_RIGHTtransposed_imr   basenamesaverd   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   C8HH