Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/site-packages/PIL/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-312.pyc

�

&ٜg=6���ddlmZddlZddlZddlZddlmZddlmZm	Z	ddl
mZmZm
Z
mZGd�d�Zdd	�Zdd
�Z				dd�ZGd�d
ej�Zdd�Zdd�Zej,ej.ee�ej0ej.e�ej2ej.gd��ej4ej.d�y)�)�annotationsN)�Callable)�IO�cast�)�Image�	ImageFile�ImagePalette�_binaryc�J�eZdZdZd
dd�Zdd�Zd
d�Zdd�Zdd�Zdd�Z	dd�Z
y	)�	BoxReaderz}
    A small helper class to read fields stored in JPEG2000 header boxes
    and to easily step into and read sub-boxes.
    c�B�||_|dk\|_||_d|_y)Nr���)�fp�
has_length�length�remaining_in_box)�selfrrs   �@/usr/local/lib/python3.12/site-packages/PIL/Jpeg2KImagePlugin.py�__init__zBoxReader.__init__!s#����� �A�+������ "���c��|jr+|jj�|z|jkDry|jdk\r||jkSy)NFrT)rr�tellrr)r�	num_bytess  r�	_can_readzBoxReader._can_read'sH���?�?�t�w�w�|�|�~�	�9�D�K�K�G��� � �A�%��� 5� 5�5�5�rc��|j|�s
d}t|��|jj|�}t	|�|krd|�dt	|��d�}t|��|jdkDr|xj|zc_|S)NzNot enough data in headerzExpected to read z bytes but only got �.r)r�SyntaxErrorr�read�len�OSErrorr)rr�msg�datas    r�_read_byteszBoxReader._read_bytes1s����~�~�i�(�-�C��c�"�"��w�w�|�|�I�&���t�9�y� �%�i�[�0D�S��Y�K�q�Q�C��#�,��� � �1�$��!�!�Y�.�!��rc�z�tj|�}|j|�}tj||�S�N)�struct�calcsizer$�unpack)r�field_format�sizer#s    r�read_fieldszBoxReader.read_fields?s1�����|�,������%���}�}�\�4�0�0rc�z�|j}|j|�}ttj|�|�Sr&)rr$r
�io�BytesIO)rr+r#s   r�
read_boxeszBoxReader.read_boxesDs3���$�$������%������D�)�4�0�0rc��|jr4|jj�|jz|jkSy)NT)rrrrr)rs r�has_next_boxzBoxReader.has_next_boxIs0���?�?��7�7�<�<�>�D�$9�$9�9�D�K�K�G�G�rc��|jdkDr4|jj|jtj�d|_ttttf|jd��\}}|dk(r%tt|jd�d�}d}nd}||ks|j||z
�s
d}t|��||z
|_|S)	Nrrz>I4srz>Q��zInvalid header length)rr�seek�os�SEEK_CURr�tuple�int�bytesr,rr)r�lbox�tbox�hlenr"s     r�
next_box_typezBoxReader.next_box_typeOs���� � �1�$��G�G�L�L��.�.����<� "����%��U�
�+�T�-=�-=�f�-E�F�
��d��1�9���T�-�-�d�3�A�6�7�D��D��D��$�;�d�n�n�T�D�[�9�)�C��c�"�"� $�t�����rN)r)r�	IO[bytes]rr:�return�None)rr:rA�bool)rr:rAr;)r*�strrAztuple[int | bytes, ...])rAr
)rArC)rAr;)�__name__�
__module__�__qualname__�__doc__rrr$r,r0r2r?�rrr
r
s*���
#���1�
1�
�rr
c��|jd�}tj|�}||j|dz
�z}tjd|�\}}}}}}}	}	}	}	}
||z
||z
f}|
dk(r1tjd|d�}|ddzdzdkDrd	}
||
fSd
}
||
fS|
dk(rd}
||
fS|
dk(rd
}
||
fS|
dk(rd}
||
fSd}t|��)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>HHIIIIIIIIHrz>B�&r�r5�I;16�L�LA��RGB��RGBAz"unable to determine J2K image mode)rr�i16ber'�unpack_fromr)r�hdr�lsiz�siz�rsiz�xsiz�ysiz�xosiz�yosiz�_�csizr+�ssiz�moder"s               r�_parse_codestreamrces*��
�'�'�!�*�C��=�=���D�

�����q��!�
!�C�=C�=O�=O���>�:�D�$��d�E�5�!�Q��1�d�
�5�L�$��,�'�D��q�y��!�!�$��R�0����G�d�N�a��!�#��D���:���D���:��
�������:��
�������:��

�����
��:��3���#��rc�0�|dk(ryd|zd|zzd|zzS)z�Convert JPEG2000's (numerator, denominator, exponent-base-10) resolution,
    calculated as (num / denom) * 10^exp and stored in dots per meter,
    to floating-point dots per inch.rN��
i'rI)�num�denom�exps   r�_res_to_dpirj�s*��
��z���#�I��S��!�e�e�m�4�4rc��t|�}d}d}|j�rU|j�}|dk(r|j�}n/|dk(r|j	d�ddk(rd}|j�r�U|�J�d}d}d}d}d}	d}
|j��r�|j�}|dk(r�|j	d	�\}}}}t|t�sJ�t|t�sJ�t|t�sJ�||f}|d
k(r|dzdkDrd
}�nY|d
k(rd}�nP|dk(rd}�nG|dk(rd}�n>|dk(�r8d}�n4|dk(r+|dk(r&|j	d�\}
}}}|
d
k(�r|dk(�rd}�n|dk(�r|dv�r|j	d�\}}t|t�sJ�t|t�sJ�d}|j	dd|zz�D]}t|t�sJ�||kDs�|}�|dk�r�tj|dk(rdnd�}
t|�D]]}g}|j	dd|zz�D]%}t|t�sJ�|j|��'|
jt|���_|dk(rdnd}n�|d k(r�|j�}|j�r�|j�}|d!k(r�|j	d"�\}}}}}}t|t�sJ�t|t�sJ�t|t�sJ�t|t�sJ�t|t�sJ�t|t�sJ�t|||�}t|||�} |�| �|| f}	n|j�r��|j�r���|�|�
d#}!t|!��||||	|
fS)$z�Parse the JP2 header box to extract size, component count,
    color space information, and optionally DPI information,
    returning a (size, mode, mimetype, dpi) tuple.Nsjp2hsftypz>4srsjpx z	image/jpxsihdrz>IIHBrrMr5rNrOrKrPrQrRrSrTscolrz>BBBI��CMYKspclr)rOrPz>HB�>�B�P�PAsres srescz>HHHHBBzMalformed JP2 header)r
r2r?r0r,�
isinstancer:r
�range�append�getcolorr9rjr)"r�reader�header�mimetyper=r+rb�bpc�nc�dpi�palette�height�width�methr_�enumcs�ne�npc�max_bitdepth�bitdepth�i�color�value�res�tres�vrcn�vrcd�hrcn�hrcd�vrce�hrce�hres�vresr"s"                                  r�_parse_jp2_headerr��s����r�]�F�
�F��H�
�
�
�
��#�#�%���7�?��&�&�(�F��
�W�_��!�!�%�(��+�w�6�&���
�
�
������D��D�
�C�	
�B�
�C��G�
�
�
�
��#�#�%���7�?�%+�%7�%7��%@�"�F�E�2�s��f�c�*�*�*��e�S�)�)�)��c�3�'�'�'��6�?�D��Q�w�C�$�J�!�+����q�����q�����q�����q����
�W�_��q��!'�!3�!3�G�!<��D�!�Q���q�y�V�r�\���
�W�_���!4��(�(��/�G�B���b�#�&�&�&��c�3�'�'�'��L�"�.�.�s�c�C�i�/@�A��!�(�C�0�0�0��l�*�#+�L�B��q� �&�3�3�c�Q�h�F�E�R���r��A�')�E�!'�!3�!3�C�3��9�4E�!F��)�%��5�5�5����U�+�"G��$�$�U�5�\�2�#�#�c�k�s�t��
�W�_��#�#�%�C��"�"�$��(�(�*���7�?�9<����9S�6�D�$��d�D�$�%�d�C�0�0�0�%�d�C�0�0�0�%�d�C�0�0�0�%�d�C�0�0�0�%�d�C�0�0�0�%�d�C�0�0�0�&�t�T�4�8�D�&�t�T�4�8�D��'�D�,<�#�T�l����"�"�$�W�
�
�
�v�|�t�|�$���#�����x��g�-�-rc�t��eZdZdZdZdd�Zdd�Ze		d	�fd��Zejd
d��Zdd�Z
�xZS)�Jpeg2KImageFile�JPEG2000zJPEG 2000 (ISO 15444)c
�J�|jjd�}|dk(r;d|_t|j�\|_|_|j
��n||jjd�z}|dk(r�d|_t|j�}|\|_|_|_}|_	|�||jd<|jjd�jd	�r{|jjd
�}tj|�}|jj|d
z
tj �|j
�n
d}t#|��d|_d|_d
}d
}	|jj)�}tj*|�j,}t7j8dd|j:zd|j|j$|j&||f�g|_y#t.$r�d
}	|jj1�}|jjdt2j4�|jj1�}|jj|�n#t.$rd
}YnwxYwY��wxYw)NrS��O�Q�j2kr5�jP  
�
�jp2r{rlsjp2c�O�QrKznot a JPEG 2000 filerr�jpeg2k�rr)rr�codecrc�_size�_mode�_parse_commentr��custom_mimetyper|�info�endswithrrUr6r7r8r�_reduce�layers�fileno�fstat�st_size�	Exceptionrr.�SEEK_ENDr	�_Tiler+�tile)	r�sigrwr{rWrr"�fd�poss	         r�_openzJpeg2KImageFile._open�s
���g�g�l�l�1�o���%�%��D�J�%6�t�w�w�%?�"�D�J��
����!�������Q��'�C��=�=�"��
�*�4�7�7�3��RX�O��
�D�J��(<�c�4�<��?�'*�D�I�I�e�$��7�7�<�<��#�,�,�-D�E��'�'�,�,�q�/�C�$�]�]�3�/�F��G�G�L�L��!��R�[�[�9��'�'�)�,��!�#�&�&�������
����	������!�B��X�X�b�\�)�)�F�
�O�O������"�����T�\�\�4�;�;��F�C�	
�
��	���	��B�
��g�g�l�l�n�������Q����,�������������S�!���
���
��	�s7�9H�J"�A9J�
J"�J�J"�J�J"�!J"c�x�	|jjd�}|sy|d}|dvry|jjd�}tj|�}|dk(r/|jj|dz
�dd|jd<y|jj|dz
tj���)NrKr)����d�comment)rrrrUr�r6r7r8)r�marker�typrWrs     rr�zJpeg2KImageFile._parse_comment.s�����W�W�\�\�!�_�F�����)�C��l�"���'�'�,�,�q�/�C��]�]�3�'�F��d�{�'+�w�w�|�|�F�Q�J�'?���'C��	�	�)�$�������V�a�Z����5�rc�4��|jxs
t�|�Sr&)r��super�reduce)r�	__class__s �rr�zJpeg2KImageFile.reduce@s����|�|�-�u�w�~�-rc��||_yr&)r�)rr�s  rr�zJpeg2KImageFile.reduceLs	����rc��|jr�|jr�d|jz}|dz	}t|jd|z|z�t|jd|z|z�f|_|jd}t|dt�sJ�|dd|j|j|dd|ddf}tj|dd|jz|d|�g|_tjj|�S)NrrrQrSr�rK)r�r�r:r+r�rrr9r�r	r��load)r�power�adjust�t�t3s     rr�zJpeg2KImageFile.loadPs����9�9��������%�E��a�Z�F��T�Y�Y�q�\�F�*�e�3�4��T�Y�Y�q�\�F�*�e�3�4��D�J��	�	�!��A��a��d�E�*�*�*��A�$�q�'�4�<�<����a��d�1�g�q��t�A�w�G�B�"����1��v��	�	�/A�1�Q�4��L�M�D�I��"�"�'�'��-�-r)rArB)rAzVCallable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] | int)r�r:rArB)rAzImage.core.PixelAccess | None)rErFrG�format�format_descriptionr�r��propertyr��setterr��
__classcell__)r�s@rr�r��sT���
�F�0��2
�h6�$�	.�	�	.��	.��]�]����.rr�c�&�|dddk(xs|dddk(S)NrSr�rlr�rI)�prefixs r�_acceptr�bs+���r��
�)�)�	B��#�2�;�A�A�rc�x�|j}t|t�r|j�}|j	d�s|jdd�rd}nd}|jdd�}|jdd�}|jdd�}|jd	d
�}|jdd�}	|	�5t|	ttf�rtd�|	D��s
d
}
t|
��|jdd�}|jdd�}|jdd�}
|jdd�}|jdd�}|jdd�}|jdd�}|jdd�}|jd�}t|t�r|j�}|jdd�}d}t|d�r	|j�}|||||	|||
||||||||f|_
tj||tj dd|j"zd|�g�y#t$rd}Y�`wxYw)Ns.j2k�no_jp2Fr�r��offset�tile_offset�	tile_size�quality_mode�rates�quality_layersc3�HK�|]}t|ttf����y�wr&)rrr:�float)�.0�
quality_layers  r�	<genexpr>z_save.<locals>.<genexpr>s����
�IW�
�J�}�s�E�l�3��s� "z,quality_layers must be a sequence of numbers�num_resolutionsr�codeblock_size�
precinct_size�irreversible�progression�LRCP�cinema_mode�no�mct�signedr��pltrr�r�r�)�encoderinforrrD�encoder��get�listr9�all�
ValueError�hasattrr�r��
encoderconfigr	�_saver�r+)�imr�filenamer��kindr�r�r�r�r�r"r��	cblk_sizer�r�r�r�r�r�r�r�r�s                      rr�r�ms%��
�>�>�D��(�C� ��?�?�$������!�T�X�X�h��%>�����
�X�X�h��
%�F��(�(�=�$�/�K�����d�+�I��8�8�N�G�4�L��X�X�.��5�N��!��>�D�%�=�1��
�IW�
�
�=����o���h�h�0�!�4�O����)�4�0�I��H�H�_�d�3�M��8�8�N�E�2�L��(�(�=�&�1�K��(�(�=�$�/�K�
�(�(�5�!�
�C�
�X�X�h��
&�F��h�h�y�!�G��'�3���.�.�"��
�(�(�5�%�
 �C�	�B��r�8��	�����B�
	�������������
���!�B��&�O�O�B��Y�_�_�X�v����7G��D�Q�R�S��-�	��B�	�s�H+�+H9�8H9)z.jp2z.j2kz.jpcz.jpfz.jpxz.j2cz	image/jp2)rr@rAztuple[tuple[int, int], str])rgr:rhr:rir:rAzfloat | None)rr@rAzetuple[tuple[int, int], str, str | None, tuple[float, float] | None, ImagePalette.ImagePalette | None])r�r;rArC)r�zImage.Imagerr@r�zstr | bytesrArB)�
__future__rr.r7r'�collections.abcr�typingrr�rr	r
rr
rcrjr�r�r�r��
register_openr��
register_save�register_extensions�
register_mimerIrr�<module>r�s��� #�	�	�
�$��5�5�G�G�T�>5�b.��b.��b.�Ri.�i�)�)�i.�X�@T�N����O�*�*�O�W�E�����O�*�*�E�2��������L������O�*�*�K�8r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists