B ]}@sddlmZddlZddlZddlZddlZddlmZejj dkrRddl m Z n ddl m Z gZ d#ddZd$d d ZGd d d eZejd krGdddeZeenejdkrGdddeZeen~ddZGdddeZGdddeZedreeGdddeZedr*eeGdddeZedrLeeed kreejd!krved"eeeeejdfejd!ddS)%)print_functionN)Image)quotecCsVyt|tr|}Wntk r(YnX|dkr>t|n|dkrRtd|dS)Nr) issubclassViewer TypeError_viewersappendinsert)viewerorderr//tmp/pip-build-ktz6qwqq/Pillow/PIL/ImageShow.pyregister s   rcKs,x&tD]}|j|fd|i|rdSqWdS)a Display a given image. :param image: An image object. :param title: Optional title. Not all viewers can display the title. :param \**options: Additional viewer options. :returns: True if a suitable viewer was found, false otherwise. titlerr)r show)imageroptionsr rrrr,s rc@sHeZdZdZddZdZiZddZddZd d Z d d Z d dZ dS)rzBase class for viewers.cKsL|jdks>|jdkr|jdks>t|j}|j|kr>||}|j|f|S)N)1ZRGBAPNGZLA)modeformatrZ getmodebaseconvert show_image)selfrrbaserrrr@s    z Viewer.showNcCs|jS)z.Return format name, or None to save as PGM/PPM)r)rrrrr get_formatQszViewer.get_formatcKstdS)N)NotImplementedError)rfilerrrr get_commandUszViewer.get_commandcCs|jfd||i|jS)z+Save to temporary file, and return filenamer)_dumprr)rrrrr save_imageXszViewer.save_imagecKs|j||f|S)zDisplay given image) show_filer#)rrrrrrr\szViewer.show_imagecKst|j|f|dS)zDisplay given filer)ossystemr!)rr rrrrr$`szViewer.show_file) __name__ __module__ __qualname____doc__rrrrr!r#rr$rrrrr;srwin32c@s eZdZdZddiZddZdS) WindowsViewerrcompress_levelrcKs d||fS)NzDstart "Pillow" /WAIT "%s" && ping -n 2 127.0.0.1 >NUL && del /f "%s"r)rr rrrrr!oszWindowsViewer.get_commandN)r'r(r)rrr!rrrrr,ksr,darwinc@s(eZdZdZddiZddZddZdS) MacViewerrr-rcKsd}d|t|t|f}|S)Nzopen -a Preview.appz(%s %s; sleep 20; rm -f %s)&)r)rr rcommandrrrr!~s  zMacViewer.get_commandc Ksdt\}}t|d}||WdQRXt|d}tjdgd|dWdQRXt|dS)zDisplay given filewNrz7im=$(cat); open -a Preview.app $im; sleep 20; rm -f $imT)shellstdinr) tempfilemkstempr%fdopenwriteopen subprocessPopenremove)rr rfdpathfrrrr$s   zMacViewer.show_fileN)r'r(r)rrr!r$rrrrr/zs r/cCsZtjd}|sdSx@|tjD]0}tj||}tj|r"t|tj r"|Sq"WdS)NPATH) r%environgetsplitpathsepr>joinisfileaccessX_OK) executabler>dirnamefilenamerrrwhichs rLc@s(eZdZdZddiZddZddZdS) UnixViewerrr-rcKs(|j|f|d}d|t|t|fS)Nrz(%s %s; rm -f %s)&)get_command_exr)rr rr0rrrr!szUnixViewer.get_commandc Ks~t\}}t|d}||WdQRXt|d2}|j|f|d}tjd|dgd|dWdQRXt |d S) zDisplay given filer1Nr2rz im=$(cat);z $im; rm -f $imT)r3r4r) r5r6r%r7r8r9rNr:r;r<)rr rr=r>r?r0rrrr$s    zUnixViewer.show_fileN)r'r(r)rrr!r$rrrrrMsrMc@seZdZddZdS) DisplayViewercKsd}}||fS)Ndisplayr)rr rr0rIrrrrNszDisplayViewer.get_command_exN)r'r(r)rNrrrrrOsrOrPc@seZdZddZdS) EogViewercKsd}}||fS)Neogr)rr rr0rIrrrrNszEogViewer.get_command_exN)r'r(r)rNrrrrrQsrQrRc@seZdZdddZdS)XVViewerNcKs$d}}|r|dt|7}||fS)Nxvz -name %s)r)rr rrr0rIrrrrNszXVViewer.get_command_ex)N)r'r(r)rNrrrrrSsrSrT__main__z-Syntax: python ImageShow.py imagefile [title])r)N) __future__rr%r:sysr5ZPILr version_infomajorshlexrZpipesr rrobjectrplatformr,r/rLrMrOrQrSr'lenargvprintexitr9rrrrsD     .