/ lib / PIL / JpegImagePlugin.pyc
JpegImagePlugin.pyc
  1  o

  2  Y��c�t�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
  3  Z
  4  mZmZddl
mZddl
mZddl
mZddl
mZddlmZdd	lmZd
  5  d�Zdd
�Zdd�Zdd�Zdd�Zidddef�dddef�dddef�dddef�d d!d"ef�d#d$d%ef�d&d'd(ef�d)d*d+ef�d,d-�d.d/d0ef�d1d2d3ef�d4d5d6ef�d7d8d9ef�d:d;d<ef�d=d>d?ef�d@dAdBef�dCdD�idEdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdXdYef�dZdd[ef�d\d]d^ef�d_d`daef�dbdcddef�dedfdgef�dhdidjef�dkdldmef��idndodpef�dqdrdsef�dtdudvef�dwdxdyef�dzd{d|ef�d}d~def�d�d�d�ef�d�d�d�ef�d�d�d�ef�d�d�d�ef�d�d�d�ef�d�d�d�ef�d�d�d�ef�d�d�d�ef�d�d��d�d��d�d���d�d�d�d�d�d�d�d�d�d�d�dd�efd���Zd�d��ZGd�d��d�ej�Z d�d��Z!d�d��Z"d�d�d�d�d�d�d��Z#d�Z$ddd�d��Z%d�d��Z&d�d��Z'd�d��Z(d�d„Z)d�d�dĄZ*e
  6  �+e j,e*e�e
  7  �-e j,e(�e
  8  �.e j,gd�e
  9  �/e j,dơdS)��N�)�Image�	ImageFile�TiffImagePlugin)�i16be)�i32be)�o8)�o16be��	deprecate)�presetscCs&t|j�d��d}t�|j|�dS)N�)�i16�fp�readr�
 10  _safe_read)�self�marker�n�r��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PIL\JpegImagePlugin.py�Skip8srcCst|j�d��d}t�|j|�}d|d@}||j|<|j�||f�|dkrr|dd�dkrrt|d�|jd<}t	|d	�|jd
 11  <z|d}t|d�t|d
�f}Wn
 12  t
 13  y\Y�n@w|dkrf||jd<||jd<||jd<�n*|dkr�|dd�dkr�d|jvr�||jd<|j��|d|_�n|dkr�|dd�dkr�||jd<n�|dkr�|dd�dkr�|j
�|�n�|dk�rL|dd�dk�rLd}|j�di�}	|||d�dk�rKzZ|d7}t||�}
 14  |d7}||}|d|7}||d@7}t||�}|d7}||||�}
|
 15  d k�r&t|
d!�d"t|
d�t|
d�d"t|
d�d#�}
|
|	|
 16  <||7}||d@7}Wntj�y@Ynw|||d�dks�nP|d$k�ry|dd�d%k�ryt|d�|jd&<z|d'}Wn
 17  t�yrYn*w||jd(<n#|dk�r�|dd�d)k�r�|dd�|jd*<|j��|d|jd+<d|jv�r�d|jv�rz@|��}|d,}|d-}zt|d!�|d}Wnt�y�|}Ynwt�|��r�t�|d.k�r�|d/9}||f|jd<WdStttttf�y�d0|jd<YdSwdSdS)1Nr
zAPP%d�����sJFIF�Zjfif�Zjfif_version���
 18  r�dpi�	jfif_unit�jfif_density���sExif�exif����sFPXRZflashpix��ICC_PROFILE����sPhotoshop 3.0�	photoshops8BIMi�ri)�XResolutionZDisplayedUnitsX�YResolutionZDisplayedUnitsY���sAdobe�adobe��adobe_transformsMPF�mp�mpoffseti(i�gR���Q@)�Hr5)rrrrr�app�applist�append�info�divmod�	Exception�tell�_exif_offset�icclist�
 19  setdefault�i32�struct�error�
 20  IndexError�getexif�float�	TypeError�math�isnan�
 21  ValueError�KeyError�SyntaxError�ZeroDivisionError)rrr�sr6�versionr!r"�offsetr+�code�name_len�size�datar1r$�resolution_unit�x_resolutionr rrr�APP=s�
 22  �
 23  
 24  
 25  
 26  �
 27  
 28  
 29  ������
 30  ��rVcCsJt|j�d��d}t�|j|�}||jd<||jd<|j�d|f�dS)Nr
�comment�COM)	rrrrrr9r6r7r8)rrrrMrrrrX�s
 31  
 32  
 33  rXc
 34  Cs�t|j�d��d}t�|j|�}t|d�t|d�f|_|d|_|jdkr1d|j�d�}t|��|d|_|jdkr?d	|_	n|jdkrHd
 35  |_	n|jdkrQd|_	nd|j�d
�}t|��|dvrjd|j
 36  d<|j
 37  d<|jr�|j��|jddt
|j�kr�g}|jD]}|�|dd��q�d�|�}nd}||j
 38  d<g|_tdt
|�d�D] }|||d�}	|j�|	d|	dd|	dd@|	df�q�dS)Nr
r4rrrzcannot handle z-bit layersr�L�RGBr�CMYKz
-layer images)�������������progressive�progression�
r*��icc_profiler%�r)rrrrr�_size�bitsrK�layers�moder9r>�sort�lenr8�join�range�layer)
 39  rrrrM�msg�profile�prd�i�trrr�SOF�s@
 40  
 41  
 42  
 43  
 44  
 45  
 46  
 47  
 48  .�rtcs�t|j�d��d}t�|j|�}t|�rl|d}|ddkr!dnd}d|d}t|�|kr5d}t|��t�|dkr=dnd|d|���tj	d	krR|dkrR��
 49  ��fd
 50  d�tD�|j|d@<||d�}t|�sdSdS)
Nr
rrer�@zbad quantization table marker�B�H�littlecsg|]}�|�qSrr)�.0rr�rSrr�
 51  <listcomp>�zDQT.<locals>.<listcomp>r)
rrrrrrkrK�array�sys�	byteorder�byteswap�zigzag_index�quantization)rrrrM�v�	precisionZ	qt_lengthrorrzr�DQT�s �r�i��ZSOF0zBaseline DCTi��ZSOF1zExtended Sequential DCTr\ZSOF2zProgressive DCTi��ZSOF3zSpatial losslessi��ZDHTzDefine Huffman tablei��ZSOF5zDifferential sequential DCTr]ZSOF6zDifferential progressive DCTi��ZSOF7zDifferential spatiali��)ZJPG�	ExtensionNi��ZSOF9zExtended sequential DCT (AC)r^ZSOF10zProgressive DCT (AC)i��ZSOF11zSpatial lossless DCT (AC)i��ZDACz%Define arithmetic coding conditioningi��ZSOF13z Differential sequential DCT (AC)r_ZSOF14z!Differential progressive DCT (AC)i��ZSOF15zDifferential spatial (AC)i��)ZRST0z	Restart 0Ni��)ZRST1z	Restart 1Ni��)ZRST2z	Restart 2Ni��)ZRST3z	Restart 3Ni��)ZRST4z	Restart 4Ni��)ZRST5z	Restart 5Ni��)ZRST6z	Restart 6Ni��)ZRST7z	Restart 7Ni��)ZSOIzStart of imageNi��)ZEOIzEnd of imageN���ZSOSz
Start of scani��zDefine quantization tablei��ZDNLzDefine number of linesi��ZDRIzDefine restart intervali��ZDHPzDefine hierarchical progressioni���EXPzExpand reference componentrZAPP0zApplication segment 0r#�APP1zApplication segment 1r&ZAPP2zApplication segment 2i��ZAPP3zApplication segment 3i��ZAPP4zApplication segment 4i��ZAPP5zApplication segment 5i��ZAPP6zApplication segment 6i��ZAPP7zApplication segment 7i��ZAPP8zApplication segment 8i��ZAPP9zApplication segment 9i��ZAPP10zApplication segment 10i��ZAPP11zApplication segment 11i��ZAPP12zApplication segment 12r)ZAPP13zApplication segment 13r.ZAPP14zApplication segment 14i��ZAPP15zApplication segment 15i��)ZJPG0zExtension 0Ni��)ZJPG1zExtension 1Ni��)ZJPG2zExtension 2N)ZJPG3zExtension 3N)ZJPG4zExtension 4N)ZJPG5zExtension 5N)ZJPG6zExtension 6N)ZJPG7zExtension 7N)ZJPG8zExtension 8N)ZJPG9zExtension 9N)ZJPG10zExtension 10N)ZJPG11zExtension 11N)ZJPG12zExtension 12N)ZJPG13zExtension 13N�Comment)i��i��i��i��i��i��i��i��i��i�����i��cCs|dd�dkS)Nr4s���r)�prefixrrr�_acceptQsr�c@sLeZdZdZdZdd�Zdd�Zdd�Zd	d
 52  �Zdd�Z	d
d�Z
 53  dd�ZdS)�
JpegImageFile�JPEGzJPEG (ISO 10918)cCs>|j�d�}t|�sd}t|��d}d|_|_g|_i|_i|_i|_	i|_
 54  g|_g|_	|d}|dkrC||j�d�}t
|�}n|j�d�}q-|tvr�t|\}}}|dur^|||�|dkr{|j}|jd	krld
 55  }dd|jd|d
ffg|_dS|j�d�}n|dks�|dkr�d}n|dkr�|j�d�}nd}t|��q.)Nr4znot a JPEG file��rT��rr�r[�CMYK;I�jpeg�rr�i��i�zno marker found)rrr�rKrgrhrnZ
 56  huffman_dcZ
 57  huffman_acr�r6r7r>r�MARKERrirR�tile)rrMrorr�name�description�handler�rawmoderrr�_open_sL
 58  
 59  
 60  �zJpegImageFile._opencCs.|j�|�}|stjrt|d�sd|_dS|S)z�
 61          internal: read more image data
 62          For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
 63          so libjpeg can finish decoding
 64          �_endedTs��)rrr�LOAD_TRUNCATED_IMAGES�hasattrr�)r�
 65  read_bytesrMrrr�	load_read�s
 66  zJpegImageFile.load_readcCs`t|j�dkr	dS|jrdS|jd\}}}}d}|j}|ddkr-|dvr-||_|df}|r�t|jd|d|jd|d�}dD]}	||	krLnqD|d|d|d|d|	d|	|d|d|d|	d|	|df}|jd|	d|	|jd|	d|	f|_|	}||||fg|_|df|_dd|d||d|f}
 67  |j|
 68  fS)	NrrrZ)rY�YCbCrr�)rrr
rr
r4)rkr��
decoderconfigrRri�minrf)rrirR�d�e�o�a�scale�
original_sizerM�boxrrr�draft�s6&�""�.
 69  
 70  zJpegImageFile.draftcCs�t��\}}t�|�tj�|j�rt�dd||jg�nd}t	|��z/t
 71  �|��}|��|j
|_
Wd�n1s<wYWzt�|�WntyRYnwzt�|�WwtycYww|j
j|_|j
j|_g|_dS)NZdjpeg�-outfilezInvalid Filename)�tempfile�mkstemp�os�close�path�exists�filename�
 72  subprocess�
 73  check_callrIr�open�load�im�unlink�OSErrorrirRrfr�)r�fr�ro�_imrrr�
 74  load_djpeg�s2
 75  
 76  �����
 77  
 78  
 79  zJpegImageFile.load_djpegcC�t|�S�N)�_getexif�rrrrr���zJpegImageFile._getexifcCr�r�)�_getmpr�rrrr��r�zJpegImageFile._getmpcCsB|jD]\}}|dkr|�dd�\}}|dkr|�|�SqiS)z�
 80          Returns a dictionary containing the XMP tags.
 81          Requires defusedxml to be installed.
 82  
 83          :returns: XMP tags in a dictionary.
 84          r��rshttp://ns.adobe.com/xap/1.0/)r7�rsplit�_getxmp)r�segment�contentr�xmp_tagsrrr�getxmp�s�zJpegImageFile.getxmpN)�__name__�
 85  __module__�__qualname__�format�format_descriptionr�r�r�r�r�r�r�rrrrr�Zs5%r�cCsd|jvrdS|����S)Nr$)r9rD�_get_merged_dictr�rrrr��s
 86  r�c
 87  Csz|jd}Wn
 88  tyYdSwt�|�}|�d�}|dd�dkr&dnd}zt�|�}|�|j�|�	|�t
 89  |�}WntyQ}zd}t|�|�d}~wwz|d}	Wntyk}zd	}t|�|�d}~wwg}
 90  z�|d
 91  }t
d|	�D]p}t�|�d�||d
�}
d}t
 92  t||
��}t|dd@�t|dd@�t|dd@�|dd@d?|dd@d?|dd@d�}|ddkr�d|d<nd}t|��ddddd d!d"d#�}|�|d$d%�|d$<||d<|
 93  �|�qx|
 94  |d
 95  <W|St�y}zd&}t|�|�d}~ww)'Nr2rrsMM*�>�<z)malformed MP Index (unreadable directory)��z(malformed MP Index (no number of images)i�rZLLLHHre)�	Attribute�Size�
 96  DataOffsetZEntryNo1ZEntryNo2r�li@i i�i�i���)ZDependentParentImageFlagZDependentChildImageFlagZRepresentativeImageFlag�Reserved�ImageDataFormat�MPTyper�r�z!unsupported picture format in MPO�	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)riiiiiir��Unknownz!malformed MP Index (bad MP Entry))r9rJ�io�BytesIOrr�ImageFileDirectory_v2�seek�nextr��dictr;rKrmrA�unpack_from�zip�bool�getr8)rrS�
file_contents�head�
 97  endiannessr9r2r�roZquant�	mpentriesZrawmpentriesZentrynumZ
unpackedentry�labelsZmpentryZmpentryattrZ	mptypemaprrrr�s~�
 98  
 99  
100  
101  
102  ��
103  ���
104  �
105  �	
106  �
107  ��r�rYrZr�r�)�1rYrZ�RGBXr[r�)@rrrr%r*rr��r
rrrbre���*r4rr'����)�+�	r0�r���(�,�5r��� �'�-�4�6���!�&�.�3�7�<��"�%�/�2�8�;�=�#�$�0�1�9�:�>�?r
))rrrrrr)r
rrrrr)r
r
rrrrcCstdddd�|S)N�convert_dict_qtablesrzConversion is no longer needed)�actionr
108  ��qtablesrrrrjsrcCsZt|d�r
109  |jdvrdS|jddd�|jddd�|jddd�}t�|d�S)Nrh)rr�����rrr4r
)r�rhrn�	samplingsr�)r��samplingrrr�get_samplingos6r%cCs�|jdks
110  |jdkrd}t|��zt|j}Wnty/}zd|j�d�}t|�|�d}~ww|j}dd�|�dd�D�}|�d	d
111  �}|�dd
112  �}	|�d�}
113  |d
krZd
114  }d
}	d
}
115  n=|t	vrpt	|}d
116  }|�dd
117  �}	|�d�}
118  n't
119  |t�s{d}t|��|	t	vr�t	|	�dd
120  �}	t
121  |
122  t�r�|
123  t	vr�t	|
124  �d�}
125  |	dkr�d}	n(|	dkr�d}	n!|	dkr�d}	n|	dkr�d}	n|	d
kr�|j
dkr�d}t|��t|�}	dd�}|
126  d
kr�|j
dkr�d}t|��t|dd�}
127  ||
128  �}
129  |�dd�}
|�d�}|�r9d}d}||}g}|�r|�|d|��||d�}|s�d}|D]%}td|t|��}|
d|d t|�tt|��|7}
|d7}�q|�d!|j�d!��}|�d"d#��pO|�d$d#�}|�d%d#�}|�d&d�}t
130  |tj��rg|��}|||�d'd�||�d(d�|d|d|	|
131  ||
|f|_d}|�s�|�r�|jd)k�r�d*|jd|jd}n!|d+k�s�|d
132  k�r�d|jd|jd}n
133  |jd|jd}ttj|t|�d,t|
�d�}t�||d-d|jd|fg|�dS).Nrz cannot write empty image as JPEGzcannot write mode z as JPEGcSsg|]}t|��qSr)�round)ry�xrrrr{�r|z_save.<locals>.<listcomp>r r��qualityr"�subsamplingr!�keepr�zInvalid quality settingz4:4:4z4:2:2rz4:2:0r
z4:1:1r�z3Cannot use 'keep' when original image is not a JPEGcsN�dur�St�t�r9zdd����D��Wnty)}zd}t|�|�d}~ww�fdd�tdt��d�D��t�tttf�r�t�t�rT�fdd�tt���D��n	t�t�r]t���dt��kridkspnd	}t|��t	��D].\}}zt|�dkr�t
134  �t�d
135  |�}Wnt
136  y�}zd}t|�|�d}~wwt|��|<qt�SdS)NcSs.g|]}|�dd�d��D]}t|��qqS)�#rr)�split�int)ry�line�numrrrr{�s���z3_save.<locals>.validate_qtables.<locals>.<listcomp>zInvalid quantization tablecsg|]
137  }�||d��qS)rur)ryrM)�linesrrr{�srrucsg|]
138  }|�vr�|�qSrr)ry�keyr rrr{�srz$None or too many quantization tablesrw)�
139  isinstance�str�
140  splitlinesrIrmrk�tuple�listr��	enumeraterFr})r!r�ro�idx�tabler)r0r!r�validate_qtables�sH
141  
142  �
143  ��
144  
145  
146  �
147  
148  ���z_save.<locals>.validate_qtables�extrarcrdr*r�s��r(rWr`Fra�optimizer$�smoothZ
149  streamtyper[r�_rr�)�width�heightrI�RAWMODErirJr��encoderinfor�rr2r-r3r�r%�getattrr8�o16rkrr9r�Exif�tobytes�
encoderconfigrR�maxr�MAXBLOCK�_save)r�rr�ror�r�r9r r(r)r!�presetr:r;rdZICC_OVERHEAD_LENZMAX_BYTES_IN_MARKERZMAX_DATA_BYTES_IN_MARKER�markersrrrrRrWr`r<r$�bufsizerrrrJ}s�
150  ��
151  
152  
153  %
154  
155  ����
156  ���
157  
158  � $rJcCs@|��}t�dd||g�zt�|�WdStyYdSw)NZcjpegr�)�_dumpr�r�r�r�r�)r�rr�r�rrr�_save_cjpeg)s�rOc	Csxt||�}z|��}|ddkrddlm}|�||�}W|SW|Sttfy-Y|Sty;t�	d�Y|Sw)Nr�r)�MpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)
159  r�r��MpoImagePluginrP�adoptrFrCrK�warnings�warn)rr�r��mpheaderrPrrr�jpeg_factory5s$
160  	�����rV)z.jfifz.jpez.jpgz.jpegz
161  image/jpeg)NN)0r}r�rGr�rAr�r~r�rSr�rrr�_binaryrrrr@rr	rD�
162  _deprecaterZJpegPresetsrrrVrXrtr�r�r�r�r�r�rAr�r#rr%rJrOrV�
register_openr��
register_save�register_extensions�
register_mimerrrr�<module>sH!y2
163  �
164  �
165  �
166  �
167  �
168  �
169  �
170  �	�
171  
172  �
173  �
174  �
175  
�
176  �
177  �
178  �����������
179  �
180  �
181  �
182  �
183  �
184   �
185  !�
186  "�
187  #�
188  $�
189  %�
190  &�
191  '�
192  (�
193  )�
194  *�
195  +�
196  ,�
197  -�
198  .�
199  /�
200  0�1�2�3�4�C	!N�
201  �-
202