B .^6% @sddlZddlZddlZddlmZmZddZddddd d gZd d Zd dZ GdddejZ d%ddZ ddZ ddZ ddZee je ee jeedkreejdkredeejdZe esedeeeZedeeedeejedeejed eejed!d"d#eeeejdkrejdZeej Zed$ej!"eefe#ee jWdQRXdS)&N)Image ImageFilec Cs>y t|}||dkrdSdSWnttfk r8dSXdS)Nr)int ValueError OverflowError)fir 9/tmp/pip-install-mwhup7aw/Pillow/PIL/SpiderImagePlugin.pyisInt*s r riiiicCsvd|}xdD]}t||sdSqWt|d}|tkr>dSt|d}t|d}t|d}|||krrdS|S)N)c)r rrrrr)r riforms)thr iformlabreclabbytlenbytr r r isSpiderHeader>s       rc CsTt|d}|d}WdQRXtd|}t|}|dkrPtd|}t|}|S)Nrb\z>23frz<23f)openreadstructunpackr)filenamefprrhdrlenr r r isSpiderImageRs   r&c@sbeZdZdZdZdZddZeddZedd Z d d Z d d Z dddZ ddZ ddZdS)SpiderImageFileZSPIDERzSpider 2D imageFcCsd}|j|}yPd|_td|}t|}|dkrNd|_td|}t|}|dkr^tdWntjk r~tdYnXd|}t|d}|dkrtd t|d t|d f|_ t|d |_ t|d |_ |j dkr|j dkr|}d|_ n|j dkrT|j dkrTt|d t|d d|_ ||_t|d|_ |d }d|_ n2|j dkr~|j dkr~||j}d |_ ntd|jrd|_nd|_d|_dd|j||jddffg|_|j|_dS)Nlrz>27frz<27fznot a valid Spider file)rrznot a Spider 2D imagerrz inconsistent stack header valueszF;32BFzF;32FFraw)rr)r$r Z bigendianr!r"r SyntaxErrorerrorr_sizeistack imgnumber_nimagesimgbytesr% stkoffsetrawmodemodesizeZtile_SpiderImageFile__fp)selfnrrr%rroffsetr r r _opencsP      zSpiderImageFile._opencCs|jS)N)r4)r;r r r n_framesszSpiderImageFile.n_framescCs |jdkS)Nr)r4)r;r r r is_animatedszSpiderImageFile.is_animatedcCs|jdkrdS|jdSdS)Nrr)r3)r;r r r tells zSpiderImageFile.tellcCsZ|jdkrtd||s dS|j||j|j|_|j|_|j|j| dS)Nrz#attempt to seek in a non-stack file) r2EOFErrorZ _seek_checkr%r5r6r:r$seekr>)r;framer r r rCs  zSpiderImageFile.seekcCsH|\}}d}||kr$|||}| |}|||fdddS)NrcSs |||S)Nr )r mbr r r z.SpiderImageFile.convert2byte..L) getextremaZpointconvert)r;depthZminimummaximumrFrGr r r convert2bytes    zSpiderImageFile.convert2bytecCsddlm}|j|ddS)Nr)ImageTk)Zpalette)PILrPZ PhotoImagerO)r;rPr r r tkPhotoImages zSpiderImageFile.tkPhotoImagecCsBz4y|j|jkr|jWntk r0YnXWdd|_XdS)N)r:r$closeAttributeError)r;r r r _close__fps   zSpiderImageFile._close__fpN)rE)__name__ __module__ __qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingr>propertyr?r@rArCrOrSrVr r r r r']s7   r'c Cs|dkst|dkrdSg}x|D]}tj|s@td|q"y"t|}|}WdQRXWn*tk rt |st|dw"YnX||j d<| |q"W|S)zJcreate a list of :py:class:`~PIL.Image.Image` objects for use in a montageNrzunable to find %sz is not a Spider image filer#) lenospathexistsprintrrrO Exceptionr&infoappend)filelistZimglistimgimr r r loadImageSeriess"      rhc Cs|j\}}|d}td|}d|dkr2|d7}||}g}t|d}xt|D]}|dqTWt|dkrvgSd|d<t||d<d|d <t||d <t||d <t||d <t||d<|dd}|dg} x|D]} | td | qW| S)Nr+irrgrg?rrrrrr)r9rrangerdr]floatr!pack) rgZnsamZnrowrrrhdrZnvaluesr Zhdrstrvr r r makeSpiderHeaders2             rnc Csj|jddkr|d}t|}t|dkr4td||d}t||dd|jd|ddffgdS) Nrr-rQzError creating Spider headerzF;32NFr.)rrr) r8rLrnr]OSError writelinesr_saver9)rgr$r#rlr7r r r rq s   rqcCs.tj|d}ttj|t|||dS)Nr)r^r_splitextrZregister_extensionr'rZrq)rgr$r#extr r r _save_spidersrt__main__rz6Syntax: python SpiderImagePlugin.py [infile] [outfile]z$input image must be in Spider formatzimage: zformat: zsize: zmode: z max, min:  )endz%saving a flipped version of %s as %s )N)$r^r!sysrRrrr rrr&r'rhrnrqrtZ register_openrZZ register_saverWr]argvraexitr#rrgstrr9r8rKoutfileZ transposeZFLIP_LEFT_RIGHTr_basenamesaver r r r #sH   s "