3

‹ˆh/  ã               @   sh   d dl mZmZmZ d dlmZ dd„ ZG dd„ dejƒZ	ej
e	jeƒ eje	jdƒ eje	jdƒ d	S )
é   )ÚImageÚ	ImageFileÚJpegImagePlugin)Úi16bec             C   s   t j| ||ƒS )N)r   Ú_save)ZimÚfpÚfilename© r	   úR/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/MpoImagePlugin.pyr      s    r   c               @   sX   e Zd ZdZdZdZdd„ Zddd„Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zeddd„ƒZdS )ÚMpoImageFileZMPOzMPO (CIPA DC-007)Fc             C   s$   | j jdƒ tjj| ƒ | jƒ  d S )Né    )r   Úseekr   ÚJpegImageFileÚ_openÚ_after_jpeg_open)Úselfr	   r	   r
   r   +   s    zMpoImageFile._openNc                sž   |d k	r|nˆ j ƒ ˆ _ˆ jd ˆ _‡ fdd„ˆ jd D ƒˆ _dˆ jd< ˆ jtˆ jƒksZt‚ˆ jd= ˆ jdkˆ _ˆ jˆ _	ˆ j	j
ˆ jd ƒ dˆ _dˆ _dˆ _d S )Ni°  c                s   g | ]}|d  ˆ j d  ‘qS )Z
DataOffsetÚmpoffset)Úinfo)Ú.0Zmpent)r   r	   r
   ú
<listcomp>4   s    z1MpoImageFile._after_jpeg_open.<locals>.<listcomp>i°  r   r   r   )Z_getmpÚmpinfoZn_framesÚ_MpoImageFile__mpoffsetsÚlenÚAssertionErrorr   Zis_animatedr   Ú_MpoImageFile__fpr   Ú_MpoImageFile__frameÚoffsetÚreadonly)r   Úmpheaderr	   )r   r
   r   0   s    
zMpoImageFile._after_jpeg_openc             C   s   | j j|ƒ d S )N)r   r   )r   Úposr	   r	   r
   Ú	load_seekC   s    zMpoImageFile.load_seekc             C   s  | j |ƒsd S | j| _| j| | _| jj| jd ƒ | jjdƒ}|sLtdƒ‚t|ƒdkrÒt| jjdƒƒd }t	j
| j|ƒ| jd< | jd | d d }|jdƒrä| jƒ jd	ƒ}d
|kräd|krä|d
 |d f| _nd| jkrä| jd= dd| j | j| jdffg| _|| _d S )Né   zNo data found for frameiáÿ  Úexifi°  Ú	AttributeZMPTypezLarge Thumbnailii‡  i   i   Zjpegr   Ú )r   r   )Z_seek_checkr   r   r   r   r   ÚreadÚ
ValueErrorÚi16r   Ú
_safe_readr   r   Ú
startswithZgetexifZget_ifdÚ_sizeÚsizeÚmodeZtiler   )r   ÚframeÚsegmentÚnZmptyper"   r	   r	   r
   r   F   s(    


zMpoImageFile.seekc             C   s   | j S )N)r   )r   r	   r	   r
   Útell_   s    zMpoImageFile.tellc             C   sB   z4y| j | jkr| j jƒ  W n tk
r0   Y nX W d d | _ X d S )N)r   r   ÚcloseÚAttributeError)r   r	   r	   r
   Ú
_close__fpb   s    
zMpoImageFile._close__fpc             C   s   t | _| 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.
        )r   Ú	__class__r   )Zjpeg_instancer   r	   r	   r
   Úadoptk   s    
zMpoImageFile.adopt)N)N)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingr   r   r    r   r0   r3   Ústaticmethodr5   r	   r	   r	   r
   r   %   s   
	r   z.mpoz	image/mpoN)r$   r   r   r   Ú_binaryr   r'   r   r   r   Zregister_saver9   Zregister_extensionZregister_mimer	   r	   r	   r
   Ú<module>   s   	^