)Ej)*ddlmZddlZddlZddlZddlmZmZddlm Z m Z ddl m Z dZ d1d Zgd Zd2dZd3dZGdde j Zd4d5dZd6dZd7d"Zd7d#Ze jejee jejeed$kreejd%kred&ejejdZeesed'eje j e5Z!ed(e!ed)e!jed*e!j"ed+e!j#ed,d-.ee!$eejd%krqejd%Z%e!&e j'j(Z)ed/ej*+ed0e%d-e),e%ejddddS#1swxYwYdSdS)8) annotationsN)IOAny)Image ImageFile) DeferredErrorFfrreturnintcl t|}||z dkrdSdS#ttf$rYdSwxYw)Nrr)r ValueError OverflowError)r is GC:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/SpiderImagePlugin.pyisIntr0sP FF q5A::11  &qqs 33)riiiittuple[float, ...]cd|z}dD]}t||sdSt|d}|tvrdSt|d}t|d}t|d}|||zkrdS|S)Nc)r rrrrr)rr iforms)rhriformlabreclabbytlenbyts risSpiderHeaderr%Ds  A &QqT{{ 11  !IIE Fq 2ZZF 2ZZF 2ZZF &6/""q Mfilenamestrct|d5}|d}dddn #1swxYwYtjd|}t |}|dkr$tjd|}t |}|S)Nrb\z>23frz<23f)openreadstructunpackr%)r'fpr rhdrlens r isSpiderImager2Xs h   GGBKK fa  A A  F {{ M&! $ $"" Ms 377ceZdZdZdZdZddZeddZedd Z dd Z dd Z dddZ e rddlmZddZdS)SpiderImageFileSPIDERzSpider 2D imageFr Nonecd}|jJ|j|} d|_tjd|}t |}|dkr+d|_tjd|}t |}|dkrd}t |n)#tj$r}d}t ||d}~wwxYwd|z}t|d}|dkrd }t |t|d t|d f|_ t|d |_ t|d |_ |j dkr|j dkr |} d|_ n|j dkrl|j dkrat|d t|d zdz|_ ||_t|d|_ |d z} d|_ n9|j dkr|j dkr||jz} d |_ nd}t ||jrd|_nd|_d|_t%jdd|jz| |jg|_|j|_dS)Nlrz>27frz<27fznot a valid Spider filerrznot a Spider 2D imagerrz inconsistent stack header valueszF;32BFzF;32FFrawrr)r0r- bigendianr.r/r% SyntaxErrorerrorr _sizeistack imgnumber_nimagesimgbytesr1 stkoffsetrawmode_moder_Tilesizetile_fp) selfnr rr1msger r!offsets r_openzSpiderImageFile._openhsn w""" GLLOO *DN fa((A#A&&F{{!"M&!,,'**{{/!#&&&| * * *+Cc"" ) * AIAaD  A::)Cc"" "2ZZQqT* !B%jj QrU ;!  ! 3 3FDMM [1__1!4!4"JJQqT2Q6DM DK"JJDMaZFDNN [A  $.1"4"4dn,FDKK4Cc"" " > ##DLL"DL _UFTY,> UUV 7sA3BC*B<<Cr c|jSNrFrOs rn_frameszSpiderImageFile.n_framess }r&boolc|jdkSNrrWrXs r is_animatedzSpiderImageFile.is_animateds}q  r&c0|jdkrdS|jdz S)Nrr)rErXs rtellzSpiderImageFile.tells! >A  1>A% %r&framect|jdkrd}t|||sdSt|jt r |jj|j||j|jzzz|_ |j|_ |j |j | dS)Nrz#attempt to seek in a non-stack file) rDEOFError _seek_check isinstancerNr exr1rGrHr0seekrT)rOr`rQs rrfzSpiderImageFile.seeks ;!  7C3-- &&  F dh . . (+ u dm0K'LL(  T^$$$ r&depth Image.Imagec|}t|dtsJ|\}}d||kr|||z z  |z|fddS)Nrrc|zzSrV)rbms rz.SpiderImageFile.convert2byte..sAEAIr&L) getextremardfloatpointconvert)rOrhextremaminimummaximumrmrns @@r convert2bytezSpiderImageFile.convert2bytes//##'!*e,,,,," g  7*+A BLzz-----..66s;;;r&rImageTkImageTk.PhotoImagec`ddlm}||dS)Nrry)palette)rz PhotoImagerx)rOrzs r tkPhotoImagezSpiderImageFile.tkPhotoImages9!!$"3"3"5"5s!CCCr&N)r r6)r r )r rZ)r`r r r6)rg)rhr r ri)r r{)__name__ __module__ __qualname__formatformat_description!_close_exclusive_fp_after_loadingrTpropertyrYr]r_rfrx TYPE_CHECKINGrrzrrlr&rr4r4cs F*(-%::::xX!!!X!&&&&    <<<<<DDDDDDr&r4filelistlist[str] | Nonelist[Image.Image] | Nonec|t|dkrdSg}|D]}tj|st d|4 t j|5}t|tsJ| }dddn #1swxYwYn1#t$r$t|st |dYwxYw||j d<| ||S)zJcreate a list of :py:class:`~PIL.Image.Image` objects for use in a montageNrzunable to find z is not a Spider image filer')lenospathexistsprintrr,rdr4rx Exceptionr2infoappend)r byte_imgsimgimbyte_ims rloadImageSeriesrs`3x==1,,tI " "w~~c""  )C)) * * *  C ,B!"o66666//++ , , , , , , , , , , , , , , ,    %% ;999::: H $' Z !!!! s6B)%,B B)B! !B)$B! %B))+CCrri list[bytes]c|j\}}td|dz}td|z }d|zdkr|dz }||z}t|dz }|dkrgSdg|z}d|d<t||d<t||d <d|d <t||d <t||d <t||d <t||d<|dd}|dd|DS)Nrr;irrgg?rrrrrrc8g|]}tjd|S)r )r.pack).0vs r z$makeSpiderHeader..s$ - - -AFKQ   - - -r&)rLmaxr rrr)rnsamnrowr$r"r#nvalueshdrs rmakeSpiderHeaderrsJD$ D\\A F   F f}!  f_F&1*ooG|| %'/CCF 4[[CF 4[[CF CFDkkCGFmmCGFmmCGFmmCG abb'CJJsOOO - - - - --r&r0 IO[bytes] str | bytesr6c B|jdkr|d}t|}t|dkrd}t |||d}t j||t jdd|j zd|gdS)Nr=r}zError creating Spider headerzF;32NFr>r?r) modertrrOSError writelinesr_saverKrL)rr0r'rrQrIs rrrs w#~~ ZZ__ 2  C 3xx#~~,cllMM#G OBY_UFRW4DaQQRSSSSSr&c tj|dx}rJt|tr|n|}t jtj |t|||dSr\) rrsplitextrdbytesdecoderregister_extensionr4rr)rr0r' filename_extexts r _save_spiderr#sww''11!44|>'1,'F'FXl!!###L  !7=== "b(r&__main__rz7Syntax: python3 SpiderImagePlugin.py [infile] [outfile]z$input image must be in Spider formatzimage: zformat: zsize: zmode: z max, min:  )endzsaving a flipped version of z as )r rr r )rrr r )r'r(r r rV)rrr r)rrir r)rrir0rr'rr r6)- __future__rrr.systypingrrrrr_utilr rrrr%r2r4rrrr register_openr register_saverrargvrexitr'r,rrLrrqoutfile transpose TransposeFLIP_LEFT_RIGHT transposed_imrbasenamesaverlr&rrsF#"""""    $ # #(oDoDoDoDoDi)oDoDoDn6....< T T T T O*O<<<O*L999 z s38}}q GHHH x{H = " " 4555 H  @ nnn $$$%%%  rw  !!!  rw  !!! l$$$$ bmmoo 3sx==1  hqkGLL)HIIM E!rw/?/?/I/I!!!!!      w(> ? ? ?#@@@@@@@@@@@@@@@@@@sC7HH  H