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__/MpoImagePlugin.cpython-312.pyc

�

&ٜgL���ddlmZddlZddlZddlZddlmZmZmZddl	m
Z
mZmZm
Z
mZddlmZd
d�Zd
d�ZGd	�d
e
j&�Ze
j*ej,e�e
j.ej,e�e
j0ej,d�e
j2ej,d�y)�)�annotationsN)�IO�Any�cast�)�Image�	ImageFile�
ImageSequence�JpegImagePlugin�TiffImagePlugin)�o32lec�2�tj|||�y�N)r�_save)�im�fp�filenames   �=/usr/local/lib/python3.12/site-packages/PIL/MpoImagePlugin.pyrr%s�����"�b�(�+�c
��|jjdg�}|st|dd�st|||�yd}g}t	j
|g|�D�]"}t
j|�D�]}|s�dtjdd�zdzd	z|jd
<|jjd�}t|tj�r|j�}||jd<|r|dt|�zz
}tj|||�|j!|j#����|j%|d
�|j!|j#�|dz
���	��%t'j(�}	d|	d<t|�|	d<d}
d}t+|�D];\}}
|dk(rd}nd}|
tjd||
|dd�z
}
|dk(r||z}||
z
}�=|
|	d<|j-|�|j/dt1d�z|	jd�z�|j-dt2j4�y)N�
append_images�is_animatedF�s��z>H�XsMPFsR                                                                                  �extra�exif��JPEG���s0100i���rriz<LLLHH��sII*�)�encoderinfo�get�getattrr�	itertools�chainr
�Iterator�struct�pack�
isinstancer�Exif�tobytes�lenr�append�tell�saver�ImageFileDirectory_v2�	enumerate�seek�writer
�os�SEEK_END)rrrr�
mpf_offset�offsets�
imSequence�im_framer�ifd�	mpentries�data_offset�i�size�mptypes               r�	_save_allrB)s���N�N�&�&���;�M����]�E�!B�
�b�"�h����J��G��o�o�r�d�M�:�
�%�.�.�z�:�H�� �&�+�+�d�F�";�;�h�F��R��$�$�W�-� �+�+�/�/��7���d�E�J�J�/��<�<�>�D�37�H�(�(��0���!�c�$�i�-�/�J��%�%�h��H�=����r�w�w�y�)��
�
�b�&�)����r�w�w�y�7�2�;�6�7�#;�;�(�
/�
/�
1�C��C��K��g�,�C��K��I��K��W�%���4���6��F��F��V�[�[��6�4��a��K�K�	���6��:�%�K��t���&��C��K��G�G�J���H�H�]�U�1�X�
%����A��
6�7��G�G�A�r�{�{�rc�b�eZdZdZdZdZdd�Zdd
d�Zdd�Zdd�Z	dd	�Z
e	d					dd
��Zy)�MpoImageFile�MPOzMPO (CIPA DC-007)Fc��|jjd�tjj	|�|j�y)Nr)rr4r�
JpegImageFile�_open�_after_jpeg_open��selfs rrHzMpoImageFile._opends1�������Q���%�%�+�+�D�1����rNc�H�|�|n|j�|_|j�
d}t|��|jd|_|jdD�cgc]}|d|jdz��c}|_d|j
d<|jt
|j
�k(sJ�|jd=|jdkD|_|j|_	|jj|j
d�d|_d|_d|_
ycc}w)Nz(Image appears to be a malformed MPO filer r!�
DataOffset�mpoffsetrr)�_getmp�mpinfo�
ValueError�n_frames�info�_MpoImageFile__mpoffsetsr.rr�_fpr4�_MpoImageFile__frame�offset�readonly)rK�mpheader�msg�mpents    rrIzMpoImageFile._after_jpeg_openis��"*�"6�h�D�K�K�M����;�;��<�C��S�/�!����F�+��
�EI�[�[�QW�EX�
�EX�E�E�,��$�)�)�J�"7�7�EX�
��� �������}�}��D�$4�$4� 5�5�5�5��I�I�j�!��=�=�1�,����7�7������
�
�d�&�&�q�)�*���������
��
s�Dc�:�|jj|�yr)rUr4)rK�poss  r�	load_seekzMpoImageFile.load_seeks�����
�
�c�rc��|j|�sy|j|_|j||_|j
j
d�}d|j
vr
|j
d=|jj|jdz�|jjd�s
d}t|��|jj|j�tjj|�|j
j
d�|k7r|j�tjdd|j z|j|j"dd�g|_||_y)Nr�zNo data found for frame�jpeg)rrrr)�_seek_checkrUrrTrWrSr$r4�readrQrrGrH�_reload_exifr	�_Tiler@�tilerV)rK�frame�
original_exifrZs    rr4zMpoImageFile.seek�s������&���(�(����&�&�u�-����	�	�
�
�f�-�
��T�Y�Y���	�	�&�!������T�[�[�1�_�%��w�w�|�|�A��+�C��S�/�!������T�[�[�!��%�%�+�+�D�1��9�9�=�=�� �M�1�����
�O�O�F�F�T�Y�Y�$6����T�Y�Y�q�\�RT�EU�V�
��	���rc��|jSr)rVrJs rr0zMpoImageFile.tell�s���|�|�rc�^�t|_tt|�}|j|�|S)aC
        Transform the instance of JpegImageFile into
        an instance of MpoImageFile.
        After the call, the JpegImageFile is extended
        to be an MpoImageFile.

        This is essentially useful when opening a JPEG
        file that reveals itself as an MPO, to avoid
        double call to _open.
        )rD�	__class__rrI)�
jpeg_instancerY�mpo_instances   r�adoptzMpoImageFile.adopt�s,��#/�
���L�-�8���%�%�h�/��r)�return�Noner)rY�dict[int, Any] | Nonerorp)r]�introrp)rgrrrorp)rorr)rlzJpegImagePlugin.JpegImageFilerYrqrorD)
�__name__�
__module__�__qualname__�format�format_description�!_close_exclusive_fp_after_loadingrHrIr^r4r0�staticmethodrn�rrrDrD_s_��
�F�,��(-�%� �
�,��0��+/��4��'��
���rrDz.mpoz	image/mpo)rzImage.Imagerz	IO[bytes]rzstr | bytesrorp)�
__future__rr&r6r)�typingrrr�rr	r
rr�_binaryr
rrBrGrD�
register_saverv�register_save_all�register_extension�
register_mimerzrr�<module>r�s���(#��	�
� � ����,�/�lP�?�0�0�P�t����L�'�'��/������+�+�Y�7������,�,�f�5�����L�'�'��5r

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