Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/GifImagePlugin.cpython-35.pyc



�ʴW�U�@s�ddlmZmZmZmZmZmZdZejZej	Z
ejZejZ
dd�ZGdd�dej�ZyddlZWnek
r�dZYnXdd	d	d	d
d
iZddd
�Zdd�Zddd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdddd�Zd"dd�Zejejee�ejeje�ej eje�ej!ejd �ej"ejd!�dS)#�)�Image�	ImageFile�ImagePalette�
ImageChops�
ImageSequence�_binaryz0.9cCs|dd�dkS)N��GIF87a�GIF89a)r	r
�)�prefixrr�E/opt/alt/python35/lib64/python3.5/site-packages/PIL/GifImagePlugin.py�_accept-src@s�eZdZdZdZdZdd�Zdd�Zedd	��Z	ed
d��Z
dd
�Zdd�Zdd�Z
dd�ZdS)�GifImageFileZGIFzCompuserve GIFNcCs>|jjd�}|r:t|�r:|jjt|��SdS)N�)�fp�read�i8)�self�srrr
�data;szGifImageFile.datacCs�|jjd�}|dd�dkr4td��|dd�|jd<t|dd��t|dd��f|_g|_t|d�}|d	@d
}|d@rot|d�|jd
<|jjd|>�}x�tdt	|�d�D]z}|dt||�koCt||d
�koCt||d�kns�t
jd|�}||_|_
Pq�W|j|_|jj�|_d|_d|_|jd�dS)N�
r�GIF87a�GIF89aznot a GIF file�version��
�r���
background�r��RGB)rr)rr�SyntaxError�info�i16�size�tiler�range�lenr�raw�global_palette�palette�_GifImageFile__fp�tell�_GifImageFile__rewind�	_n_frames�_is_animated�_seek)rr�flags�bits�p�irrr
�_openAs*/	
Q		zGifImageFile._opencCsy|jdkrr|j�}y"x|j|j�d�q!WWn%tk
rd|j�d|_YnX|j|�|jS)Nr)r1r/�seek�EOFError)r�currentrrr
�n_frames_s

zGifImageFile.n_framescCsg|jdkr`|j�}y|jd�d|_Wntk
rRd|_YnX|j|�|jS)NrTF)r2r/r9r:)rr;rrr
�is_animatedks



zGifImageFile.is_animatedcCs�||jkrdS||jkr/|jd�|j}xat|jd|d�D]E}y|j|�WqStk
r�|j|�td��YqSXqSWdS)Nrrzno more images in GIF file)�_GifImageFile__framer3r)r:r9)r�frameZ
last_frame�frrr
r9ys
	!

zGifImageFile.seekc
Cs
|dkrdd|_d|_ddddg|_d"|_|jj|j�d|_d|_n|j	sw|j
�||jdkr�td|��||_g|_|j|_
|jr�|j
j|j�x|j�r�q�Wd|_|jr|j	j|j|j�ddlm}||j�|_x�|j
jd�}|s\|dkr`Pq7|dkr�|j
jd�}|j�}t|�dkrt|d�}|d@r�t|d�|jd	<t|dd��d
|jd<d|@}|d
?}|r�||_n�t|�dkr6||jd<n�t|�dkr�||j
j�f|jd<|dd�dkr�|j�}t|�dkr�t|d�dkr�t|dd��|jd<x`|j�r�q�Wq7|dkr7|j
jd�}t|dd��t|d
d��}}|t|dd��|t|dd��}	}
|||	|
f|_t|d�}|d@dk}|d@r�|d@d}tjd|j
jd|>��|_t|j
jd��}|j
j�|_d|||	|
f|j||ffg|_Pq7q7Wy�|jd
krPd|_nR|jd
kr�tjjd|j|jd �|_n|j	r�|j	j�|_|jr�|jj|j�|_Wnt t!fk
r�YnX|js�t"�d!|_#|jr	d|_#dS)#Nrrzcannot seek to frame %d)�copy�;�!�r!�transparencyr�duration�r"��comment��	extensionrsNETSCAPE2.0�loop�,�	�rr�@rrr#�gif�Pr �L���)$Z_GifImageFile__offsetZdispose�dispose_extentr>r.r9r0�_prev_im�disposal_method�im�load�
ValueErrorr(rr�pasterAr,r-rrr%r&r/r*rr+r�core�fillr'�crop�AttributeError�KeyErrorr:�mode)
rr?rAr�blockr4Zdispose_bitsZx0Zy0�x1�y1�	interlacer5rrr
r3�s�					
					
!

(-5
%					zGifImageFile._seekcCs|jS)N)r>)rrrr
r/szGifImageFile.tellcCs�tjj|�|jrk|jdkrk|jj|j�}|jj||j|jd��|j|_|jj	�|_dS)NrZRGBA)
r�load_endrVrWrXr^rUr[�convertrA)r�updatedrrr
rfszGifImageFile.load_end)�__name__�
__module__�__qualname__�formatZformat_descriptionr,rr8�propertyr<r=r9r3r/rfrrrr
r5s�rN�1rSrRFcCs}tj|j�dkrp|rcd}|jrJt|jj�d�d}|jdddd|�S|jd�S|jd�S)	Nr#�rr!rRr-ZcolorsrS)rZgetmodebaserar-r*�getdatarg)rXZinitial_callZpalette_sizerrr
�
_convert_mode5s	
rqcCst|||dd�dS)N�save_allT)�_save)rXr�filenamerrr
�	_save_allCsrucCs�|jj|j�trIytj|||�dSWntk
rHYnX|jtkrg|j�}nt	|d�}y|jd}Wn4t
k
r�d}|jjdd�|jd<YnX|r�d}d}x�tj
|�D]�}t	|�}|s-t|||j�d}|t|d
|j�7}n�|rWx|D]}	|j|	�q:Wd}tj||j��}
|
j�}|r�x@t|j|�|dd�|j�D]}	|j|	�q�Wn|}q�W|r�d}|s�t|||j�d}x|D]}	|j|	�qWd}
t|�r3|
dB}
t||d|
�dt|�f|_tj||d	d|jdt|jfg�|jd
�|jd�t|d�r�|j�dS)NTr-�optimizerr"FrPrrQsrB�flush)rr)rr)rr)�encoderinfo�updater%�_imaging_gif�save�IOErrorra�RAWMODErArqr`�getr�Iterator�	getheaderrp�writerZsubtract_moduloZgetbboxr^�
get_interlace�_get_local_headerZ
encoderconfigrrsr'�hasattrrw)rXrrtrrZim_outr-ZpreviousZfirst_frameZim_framer�deltaZbbox�headerr4rrr
rsGsf

!





rscCsKy|jd}Wntk
r+d}YnXt|j�dkrGd}|S)Nrer�r)rxr`�minr')rXrerrr
r��s
r�cCs�d}y|jd}Wntk
r+Yn�Xt|�}d}t||j�r�t|�}t|�dkr�x@tt|��D],}|||kr�|}d}Pq�d}q�Wd|jkr�t|jdd�}nd}|s�|dkrY|r�dnd}	|sd}|jd	td
�td�t|	�t	|�t|�td��d|jkr�dt|jd�ko�d
knr�|jd	td�tt|jd��|jdtd��d|jkr=|jd}
|jd	td
�td�dtd�td�t	|
�td��|jdt	|d�t	|d�t	|j
d�t	|j
d�t|�td��dS)NFrETrorFrrrrCrDrOrIrJrHrLrsNETSCAPE2.0r!rMr)rxr`�int�
_get_optimize�_get_used_palette_colorsr*r)r��o8�o16r')rrX�offsetr4Ztransparent_color_existsrE�used_palette_colorsr7rFZtransparency_flagZnumber_of_loopsrrr
r��sL

58/
9Kr�cCs�ddl}ddlm}m}m}m}ddl}|j�}	|jdkr�t	|d��/}
|j
�}|d|	gd|
d|�WdQRXn�t	|d���}
dd	|	g}dg}
|j
�}||d|d|�}|j
�}||
d
|jd|
d|�}|jj�|j
�}|rB|||��|j
�}|rc|||
��WdQRXy|j|	�Wntk
r�YnXdS)Nr)�Popen�
check_call�PIPE�CalledProcessErrorr#�wbZppmtogif�stdout�stderrZppmquantZ256�stdin)�os�
subprocessr�r�r�r��tempfile�_dumpra�open�
TemporaryFiler��close�wait�unlink�OSError)rXrrtr�r�r�r�r�r��filer@r�Z	quant_cmdZ	togif_cmdZ
quant_procZ
togif_proc�retcoderrr
�_save_netpbm�s6"&		

r�cCs%|jdko$|o$|jdd�S)NrRrSrvr)rRrS)rar~)rXr%rrr
r�sr�cCsDg}d}x1|j�D]#}|r2|j|�|d7}qW|S)Nrr)Z	histogram�append)rXr�r7�countrrr
r�s
r�cCs�d}x�ddddgD]q}|r||kr|dkrM||dks|dkr�dt||�kozdknr�qd	}PqW|jjd
�dkr�d	}d|t|jd�t|jd�g}|jd
kr1|rt|t�r|dd�}qx|jj	d�dd�}nG|rYt|t�rY|dd�}nt
dd�td�D��}d}}t||�r�t
|�}t|�dkr�d}i}	d}
xB|D]:}|||d|dd�7}|
|	|<|
d7}
q�Wt
|j��}x,tt|��D]}
|	||
||
<q+W|jt|��|dt|�d}
|j|
�tjdd|dt|��|_|s�|}ddl}t|j|jt|�dd���d}|dkr�d}|jt|d��|r2d|kr2|d}n%d|jkrQ|jd}nd}|jt|�td��d|>t|�d}|dkr�|td�d|7}|j|�||fS)z2Return a list of strings representing a GIF headers87arErFrLrIrrrJs89arZ89asGIFrRNir#cSsg|]}|d�qS)r!r)�.0r7rrr
�
<listcomp>Ks	zgetheader.<locals>.<listcomp>ro�r!sr-r'r"rr )r*r%r~r�r'ra�
isinstance�bytesrXZ
getpalette�	bytearrayr)r�r��tobytes�	frombytesZ
putpaletterr-�mathr��ceil�logr�r�)rXr-r%rZextensionKeyr�Zsource_paletter�Z
palette_bytesZ
new_positionsr7ZoldPositionZimage_bytesZnew_palette_bytesr�Zcolor_table_sizer Zactual_target_size_diffrrr
r�*st3

 

/

r�cKs�Gdd�dt�}|j�|�}z]||_t|||d�tj||dd|jdt|jfg�|j	d�Wd|`X|j
S)z�Return a list of strings representing this image.
       The first string is a local image header, the rest contains
       encoded image data.c@s"eZdZgZdd�ZdS)zgetdata.<locals>.CollectorcSs|jj|�dS)N)rr�)rrrrr
r��sz getdata.<locals>.Collector.writeN)rirjrkrr�rrrr
�	Collector�sr�rrQsN)rr)�objectrYrxr�rrsr'r}rar�r)rXr��paramsr�rrrr
rp�s
		0rpz.gifz	image/gif)rr)#ZPILrrrrrr�__version__rZi16ler&r�Zo16ler�rrrz�ImportErrorr}rqrursr�r�r�r�r�r�rpZ
register_openrlZ
register_saveZregister_save_allZregister_extensionZ
register_mimerrrr
�<module>s:.				�
R
B1
d"