HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-38.pyc
U

g�
^� �	@s�ddlZddlZddlZddlmZmZdd�Zdd�ZGdd	�d	ej�Zd
d�Z	dd
�Z
e�ejee	�e�
eje
�e�ejddddddg�e�ejd�dS)�N�)�Image�	ImageFilecCs|�d�}t�d|�d}||�|d�}t�d|�\}}}}}}}	}	}	}	}
dg|
}dg|
}dg|
}
t|
�D],}t�d|dd|�\||<||<|
|<qt||||f}|
d	kr�|
dd
@dkr�d}nd
}n0|
dkr�d}n"|
dkr�d}n|
dk�rd}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�>BBB�$�r���I;16�L�LA�RGB��RGBA)�read�struct�unpack�unpack_from�range)�fpZhdrZlsizZsizZrsizZxsizZysizZxosizZyosiz�_ZcsizZssizZxrsizZyrsiz�i�size�mode�r�7/usr/lib/python3/dist-packages/PIL/Jpeg2KImagePlugin.py�_parse_codestreams2
�


*
rcCs�d}d}t�d|�d��\}}|dkrBt�d|�d��d}d}nd}||krVtd��|d	krp|�||�}q�q|d
kr�|�d�dkr�d
}|�||dtj�q|�||tj�q|dkr�td��d}d}d}d}	t�|�}
t�d|
�d��\}}|dk�rt�d|
�d��d}d}nd}|
�||�}|dk�r�t�d|�\}}
}	}}}}|
|f}|�r�|	dk�r~|d@dk�r~d}n>|	dk�r�d}n.|	dk�r�d}n|	dk�r�d}n|	dk�r�d}�q�q�|dkr�t�	d|�\}}}|dkr�t�	d|d�d}|dk�rR|	dk�r|d@dk�rd}n.|	dk�r.d}n|	dk�r>d}n|	dk�r�d}�q�q�|dk�r�|	dk�rz|d@dk�rzd}n|	dk�r�d}n|	dk�r�d}�q�q�|dkr�|	dk�r�d}n|	dk�r�d}�q�q�|dk�s�|dk�r�td��|||fS)z�Parse the JP2 header box to extract size, component count and
    color space information, returning a (size, mode, mimetype) tuple.Nz>I4sr
rz>Qr�zInvalid JP2 header lengthsjp2hsftyprsjpx z	image/jpxzcould not find JP2 headersihdrz>IIHBBBBr	rrrr
rrrscolrrz>I��zMalformed jp2 header)
rrr�SyntaxError�seek�os�SEEK_CUR�io�BytesIOr)r�headerZmimetypeZlboxZtboxZhlenrrZbpcZncZhioZcontentZheight�width�cZunkcZipr�methZprecZapproxZcsrrr�_parse_jp2_header8s�















r+c@s$eZdZdZdZdd�Zdd�ZdS)�Jpeg2KImageFileZJPEG2000zJPEG 2000 (ISO 15444)cCsP|j�d�}|dkr.d|_t|j�\|_|_nB||j�d�}|dkrhd|_t|j�}|\|_|_|_ntd��|j	dks�|jdkr�td��d	|_
d	|_d
}d
}z|j��}t
�|�j}Wnjtk
�r$d
}z4|j��}|j�d	tj�|j��}|j�|�Wntk
�rd
}YnXYnXdd|j	d	|j|j
|j||ffg|_dS)
Nr��O�Q�j2kr
�jP  
�
�jp2znot a JPEG 2000 filezunable to determine size/moder����jpeg2k�rr)rr�codecr�_sizerr+Zcustom_mimetyper!r�reduce�layers�filenor#�fstat�st_size�	Exception�tellr"r%�SEEK_END�tile)�selfZsigr'�fdZlength�posrrr�_open�sD



��zJpeg2KImageFile._opencCs�|jrFd|j>}|d?}t|jd||�t|jd||�f|_|jr�|jd}|dd|j|j|dd|ddf}|dd|j|d|fg|_tj�|�S)Nrrrrr3r)r6�intrr5r>r7r�load)r?ZpowerZadjust�tZt3rrrrD�s
�
*zJpeg2KImageFile.loadN)�__name__�
__module__�__qualname__�formatZformat_descriptionrBrDrrrrr,�s.r,cCs |dd�dkp|dd�dkS)Nrr-�r/r)�prefixrrr�_accept�s�rLcCsF|�d�rd}nd}|j}|�dd�}|�dd�}|�dd�}|�dd�}|�d	d�}	|	dk	r�t|	ttf�r~td
d�|	D��s�td��|�d
d�}
|�dd�}|�dd�}|�dd�}
|�dd�}|�dd�}d}t|d��rz|�	�}Wnt
k
�rd}YnX|||||	|
|||
|||f|_t�
||dd|jd|fg�dS)N�.j2kr.r0�offset�tile_offset�	tile_size�quality_modeZrates�quality_layerscSsg|]}t|ttf��qSr)�
isinstancerC�float)�.0Z
quality_layerrrr�
<listcomp>�s�z_save.<locals>.<listcomp>z,quality_layers must be a sequence of numbers�num_resolutionsrZcodeblock_size�
precinct_size�irreversibleF�progressionZLRCP�cinema_modeZnor1r8r2r3)�endswithZencoderinfo�getrS�list�tuple�all�
ValueError�hasattrr8r;Z
encoderconfigr�_saver)Zimr�filenameZkind�inforNrOrPrQrRrWZ	cblk_sizerXrYrZr[r@rrrrc�sZ
����	
�rcz.jp2rMz.jpcz.jpfz.jpxz.j2cz	image/jp2)r%r#r�rrrr+r,rLrcZ
register_openrIZ
register_saveZregister_extensionsZ
register_mimerrrr�<module>s"eD=�