3 }úÿ\ã@stddlmZmZmZddlmZdZdd„Zdd„Z Gdd „d ej ƒZ ej e j e ƒeje j d ƒeje j d ƒd S) é)ÚImageÚ ImageFileÚJpegImagePlugin)Úi16bez0.1cCs tj|ƒS)N)rÚ_accept)Úprefix©rúj/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-i584jbuk/Pillow/PIL/MpoImagePlugin.pyrsrcCstj|||ƒS)N)rÚ_save)ZimÚfpÚfilenamerrr r !sr c@speZdZdZdZdZdd„Zddd„Zd d „Ze d d „ƒZ e d d„ƒZ dd„Z dd„Z dd„Zeddd„ƒZdS)Ú MpoImageFileZMPOzMPO (CIPA DC-007)FcCs$|jjdƒtjj|ƒ|jƒdS)Né)r ÚseekrÚ JpegImageFileÚ_openÚ_after_jpeg_open)Úselfrrr r/s  zMpoImageFile._openNcs’|dk r |nˆjƒˆ_ˆjdˆ_‡fdd„ˆjdDƒˆ_dˆjd<ˆjtˆjƒksZt‚ˆjd=ˆjˆ_ˆjj ˆjdƒdˆ_ dˆ_ dˆ_ dS)Ni°csg|]}|dˆjd‘qS)Z DataOffsetÚmpoffset)Úinfo)Ú.0Zmpent)rrr ú 7sz1MpoImageFile._after_jpeg_open..i°rrr) Z_getmpZmpinfoÚ_MpoImageFile__framecountÚ_MpoImageFile__mpoffsetsÚlenÚAssertionErrorrr Ú_MpoImageFile__fprÚ_MpoImageFile__frameÚoffsetÚreadonly)rÚmpheaderr)rr r4s   zMpoImageFile._after_jpeg_opencCs|jj|ƒdS)N)rr)rÚposrrr Ú load_seekEszMpoImageFile.load_seekcCs|jS)N)r)rrrr Ún_framesHszMpoImageFile.n_framescCs |jdkS)Nr)r)rrrr Ú is_animatedLszMpoImageFile.is_animatedcCsè|j|ƒsdS|j|_|j||_|jj|jdƒd|jkrF|jd=t|jjdƒƒdkr®t|jjdƒƒd}t j |j|ƒ|jd<|j ƒ}d|krÀd|krÀ|d|df|_ nd|jkrÀ|jd=dd |j |j|jd ffg|_||_dS) NéZ parsed_exifiáÿÚexifi i ZjpegrÚ)rr)Z _seek_checkrr rrrrÚi16ÚreadrÚ _safe_readZ_getexifÚ_sizeÚsizeÚmodeZtiler)rÚframeÚnr&rrr rPs"    zMpoImageFile.seekcCs|jS)N)r)rrrr ÚtellhszMpoImageFile.tellcCsBz4y|j|jkr|jjƒWntk r0YnXWdd|_XdS)N)rr ÚcloseÚAttributeError)rrrr Ú _close__fpks   zMpoImageFile._close__fpcCst|_|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 rrr Úadoptts  zMpoImageFile.adopt)N)N)Ú__name__Ú __module__Ú __qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingrrr"Úpropertyr#r$rr0r3Ú staticmethodr5rrrr r )s    r z.mpoz image/mpoN)r'rrrÚ_binaryrr(Ú __version__rr rr Z register_saver9Zregister_extensionZ register_mimerrrr Ús c