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__/Jpeg2KImagePlugin.cpython-35.pyc



�ʴW1�@sNddlmZmZddlZddlZddlZdZdd�Zdd�ZGdd	�d	ej�Z	d
d�Z
dd
�Zeje	j
e	e
�eje	j
e�eje	j
d�eje	j
d�eje	j
d�eje	j
d�eje	j
d�eje	j
d�eje	j
d�eje	j
d�dS)�)�Image�	ImageFileNz0.1cCs�|jd�}tjd|�d}||j|d�}tjd|dd��\}}}}}}}	}
}}}
dg|
}dg|
}dg|
}xUt|
�D]G}tjd|dd	|d
d	|��\||<||<||<q�W||||f}|
dkr>|dd@d
kr5d}q�d}nE|
dkrSd}n0|
d	krhd}n|
dkr}d}nd}||fS)z�Parse the JPEG 2000 codestream to extract the size and component
    count from the SIZ marker segment, returning a PIL (size, mode) tuple.�z>Hrz>HHIIIIIIIIHN�&z>BBB�$��'���zI;16�L�LA�RGB��RGBA)�read�struct�unpack�range)�fp�hdrZlsizZsizZrsizZxsizZysizZxosizZyosizZxtsizZytsizZxtosizZytosizZcsizZssizZxrsizZyrsiz�i�size�mode�r�H/opt/alt/python35/lib64/python3.5/site-packages/PIL/Jpeg2KImagePlugin.py�_parse_codestreams,=


E					rcCs�d}x�tjd|jd��\}}|dkr^tjd|jd��d}d}nd}||kr|td��|d	kr�|j||�}Pq	|j||tj�q	W|dkr�td
��d}d}d}d}tj|�}	x�tjd|	jd��\}}|dkrQtjd|	jd��d}d}nd}|	j||�}
|dkr)tjd|
�\}}}}}
}}||f}|r�|dkr�|d
@dkr�d}nQ|dkr�d}n<|dkr�d}n'|dkrd}n|dkr%d}Pq�|dkr�tjd|
dd��\}}}|dkr�tjd|
dd��d}|dkr�|dkr�|d
@dkr�d}n<|dkr�d}n'|dkr�d}n|dkr�d}Pq�|dkrS|dkr(|d
@dkr(d}n'|dkr=d}n|dkrOd}Pq�|dkr�|dkrtd}n|dkr�d}Pq�W|dks�|dkr�td��||fS)z~Parse the JP2 header box to extract size, component count and
    color space information, returning a PIL (size, mode) tuple.Nz>I4srr	z>Qr�zInvalid JP2 header lengthsjp2hzcould not find JP2 headersihdrz>IIHBBBBr
zI;16rrr
rrrrscolrz>BBBz>I���zMalformed jp2 header)	rrr�SyntaxError�seek�os�SEEK_CUR�io�BytesIO)r�headerZlboxZtboxZhlenrrZbpcZncZhio�content�height�width�cZunkcZipr�methZprecZapprox�csrrr�_parse_jp2_header:s�!	!	'				% 						r.c@s4eZdZdZdZdd�Zdd�ZdS)�Jpeg2KImageFileZJPEG2000zJPEG 2000 (ISO 15444)cCs�|jjd�}|dkrEd|_t|j�\|_|_nU||jjd�}|dkr�d|_t|j�\|_|_ntd��|jdks�|jdkr�td��d	|_d	|_	d
}d}y%|jj
�}tj|�j
}Wngd}yH|jj�}|jjd	d�|jj�}|jj|d	�Wnd}YnXYnXdd|jd	|j|j|j	|||jffg|_dS)Nrs�O�Q�j2krsjP  
�
�jp2znot a JPEG 2000 filezunable to determine size/moderr	r�jpeg2k���r3r3r3)rr)rr�codecrrrr.r!�reduce�layers�filenor#�fstat�st_size�tellr"�tile)�self�sig�fd�length�posrrr�_open�s:				zJpeg2KImageFile._opencCs�|jrYd|j>}|d?}t|jd||�t|jd||�f|_|jr�|jd}|dd|j|j|dd|ddf}|dd|j|d|fg|_tjj|�dS)Nr	rrrr)rr)r5�intrr;r6r�load)r<ZpowerZadjust�t�t3rrrrC�s	

!	
3'zJpeg2KImageFile.loadN)�__name__�
__module__�__qualname__�formatZformat_descriptionrArCrrrrr/�s'r/cCs*|dd�dkp)|dd�dkS)Nrs�O�Q�sjP  
�
r)�prefixrrr�_accept�srLcCs}|jd�rd}nd}|j}|jdd�}|jdd�}|jdd�}|jdd�}|jd	d�}	|jd
d�}
|jdd�}|jd
d�}|jdd�}
|jdd�}|jdd�}d}t|d�r#y|j�}Wnd}YnX|||||	|
|||
|||f|_tj||dd|jd|fg�dS)Nz.j2kr0r1�offset�tile_offset�	tile_size�quality_modeZrates�quality_layers�num_resolutionsrZcodeblock_size�
precinct_size�irreversibleF�progressionZLRCP�cinema_mode�nor	r7r2r3r3)rr)	�endswithZencoderinfo�get�hasattrr7Z
encoderconfigr�_saver)Zimr�filename�kind�inforMrNrOrPrQrRZ	cblk_sizerSrTrUrVr>rrrr[�sD		r[z.jp2z.j2kz.jpcz.jpfz.jpxz.j2cz	image/jp2z	image/jpx)ZPILrrrr#r%�__version__rr.r/rLr[Z
register_openrIZ
register_saveZregister_extensionZ
register_mimerrrr�<module>s&#`;0