Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-35.pyc



�ʴW�)�@s5ddlmZmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
eejd�Z
e
r�ddlmZejZdZdd�Zdd	�Zd
d�Zdd
�Zdd�ZGdd�de�ZGdd�dej�Zdd�Zejejedd��ejejd�e	jdkr|ejeje�ejejd�e dkr1ee!e	j"dd��Z#xBe#j$dD]3Z%e%e#_%e#j&�e#j'Z'e'j(de%�q�Wej!e!e	j"dd��Z'e'j(d �e	jd!kr1ej)d �dS)"�)�Image�	ImageFile�PngImagePlugin�_binaryNZjp2klib_version)�Jpeg2KImagePlugin�cCstjd|jt��S)Nz>4sI)�struct�unpack�read�
HEADERSIZE)�fobj�r
�F/opt/alt/python35/lib64/python3.5/site-packages/PIL/IcnsImagePlugin.py�
nextheader#srcCs^|\}}|j|�|jd�}|dkr@td��t||d|df|�S)N�sz'Unknown signature, expecting 0x00000000)�seekr
�SyntaxError�read_32)r�start_length�size�start�length�sigr
r
r�read_32t's
rc	Cs�|\}}|j|�|d|d|d|df}|d|d}||dkr�|j|�}tjd||dddd�}nJtjd|d�}x2td�D]$}	g}
|}x�|dkr{|jd�}|s�Pt|�}|d@rA|d	}
|jd�}xDt|
�D]}|
j|�q'Wn |d}
|
j|j|
��||
8}|dkr�Pq�W|dkr�td
|��tjd|dj	|
�dddd�}|j
j|j
|	�q�Wd|iS)
zn
    Read a 32bit RGB icon resource.  Seems to be either uncompressed or
    an RLE packbits-like scheme.
    r����RGB�rawN��}zError reading channel [%r left]�L�)rr
r�
frombuffer�new�range�i8�appendr�join�imZputband)rrrrr�
pixel_size�sizesqZindatar)Zband_ix�dataZ	bytesleftZbyte�	blocksize�i�bandr
r
rr1sB
$$




$rcCs�|d}|j|�|d|d|d|df}|d|d}tjd||j|�dddd�}d|iS)Nrrrr!r�A)rrr#r
)rrrrr*r+r/r
r
r�read_mk_s

$$r1c	Cs |\}}|j|�|jd�}|dd�dkrd|j|�tj|�}d|iS|dd�dks�|dd�dks�|dkrts�td	��|j|�|j|�}tj|�}tj	|�}|j
dkr|jd�}d|iStd
��dS)N�rs�PNG

�RGBArs�O�Qs
�
sjP  
�
zQUnsupported icon subimage format (rebuild PIL with JPEG 2000 support to fix this)z Unsupported icon subimage format)rr
rZPngImageFile�
enable_jpeg2k�
ValueError�io�BytesIOrZJpeg2KImageFile�mode�convert)	rrrrrrr)Z
jp2kstream�fr
r
r�read_png_or_jpeg2000ks(




r;c@sHeZdZd(defgd)defgd*defgd+defgd,d
efgd-defdefd
efgd.defgd/defgd0defdefgd1defdefdefgd2defgd3defdefdefgiZdd�Zdd �Z	d!d"�Z
d#d$�Zd%d&d'�Zd%S)4�IcnsFile�rsic10rsic09�sic14sic08rsic13sic07sit32st8mk�@sicp6� sic12�0sih32sh8mksicp5sil32sl8mk�sic11sicp4sis32ss8mkcCs�i|_}||_t|�\}}|dkr@td��t}xx||kr�t|�\}}|dkrtd��|t7}|t8}||f||<|j|d�||7}qIWdS)z@
        fobj is a file-like object as an icns resource
        sicnsznot an icns filerzinvalid block headerrN)�dctrrrrr)�selfrrCr�filesizer.r-r
r
r�__init__�s
	

zIcnsFile.__init__cCs^g}xQ|jj�D]@\}}x1|D])\}}||jkr)|j|�Pq)WqW|S)N)�SIZES�itemsrCr')rD�sizesrZfmts�fmt�readerr
r
r�	itersizes�s
	zIcnsFile.itersizescCs(|j�}|std��t|�S)NzNo 32bit icon resources found)rLr�max)rDrIr
r
r�bestsize�szIcnsFile.bestsizecCsbi}xU|j|D]F\}}|jj|�}|dk	r|j||j||��qW|S)z�
        Get an icon resource as {channel: array}.  Note that
        the arrays are bottom-up like windows bitmaps and will likely
        need to be flipped or transposed in some way.
        N)rGrC�get�updater)rDrrC�coderK�descr
r
r�dataforsize�s zIcnsFile.dataforsizeNcCs�|dkr|j�}t|�dkrA|d|ddf}|j|�}|jdd�}|rl|S|jd�j�}y|j|d�Wntk
r�YnX|S)Nrrrr3rr0)rN�lenrSrO�copyZputalpha�KeyError)rDrZchannelsr)r
r
r�getimage�s
zIcnsFile.getimage)r=r=r)r=r=r)r>r>r)r>r>r)rrr)rrr)r?r?r)r@r@r)rArAr)r@r@r)rBrBr)rBrBr)
�__name__�
__module__�__qualname__r;rr1rrGrFrLrNrSrWr
r
r
rr<�sH								
r<c@s:eZdZdZdZdZdd�Zdd�ZdS)	�
IcnsImageFilea!
    PIL image support for Mac OS .icns files.
    Chooses the best resolution, but will possibly load
    a different size image if you mutate the size attribute
    before calling 'load'.

    The info dictionary has a key 'sizes' that is a list
    of sizes that the icns file has.
    ZICNSzMac OS icns resourcecCs�t|j�|_d|_|jj�|_|jd|jd|jd|jdf|_|jj�|jd<d|_	dS)Nr3rrrrI�)r\)
r<�fp�icnsr8rN�	best_sizerrL�info�tile)rDr
r
r�_open
s	zIcnsImageFile._opencCs�t|j�dkrT|j|_|jd|jd|jd|jdf|_tjj|�|jsqdS|j�|jj|j�}|j�|j	|_	|j
|_
|j|_d|_d|_f|_|j�dS)Nrrrr)
rTrr_r�loadraZload_preparer^rWr)r8r]Zload_end)rDr)r
r
rrcs"	

			zIcnsImageFile.loadN)rXrYrZ�__doc__�formatZformat_descriptionrbrcr
r
r
rr[�s
	
r[cCs�t|d�r|j�tjd�}d}d}x�dddddgD]�}d	j||�}||krw|}n|j||ftj�}|jt	j
j||d
��|j|d|dftj�}|jt	j
j||d��|}qJWd
dlm
}	m}
m}dddd||g}tj�}
|	|d|
d|
�}|jj�|j�}tj|�|r�|||��dS)z�
    Saves the image as a series of PNG files,
    that are then converted to a .icns file
    using the OS X command line utility 'iconutil'.

    OS X only.
    �flushz.iconsetNrBr@rr>iz
icon_{}x{}z.pngrz@2x.pngr)�Popen�PIPE�CalledProcessErrorZiconutilz-cr^z-o�stdout�stderr)�hasattrrf�tempfile�mkdtempre�resizerZLANCZOS�save�os�pathr(�
subprocessrgrhri�
TemporaryFilerj�close�wait�shutil�rmtree)r)r]�filenameZiconsetZlast_wZlast_im�w�prefixZ	im_scaledrgrhriZconvert_cmdrkZconvert_proc�retcoder
r
r�_save-s.
	 # 


r}cCs|dd�dkS)Nrsicnsr
)�xr
r
r�<lambda>[srz.icns�darwinz
image/icns�__main__r�rbrIzout-%s-%s-%s.pngzout.pngZwindows)*ZPILrrrrr6rqrwr�sysrmrl�corer4rr&rrrrr1r;�objectr<r[r}Z
register_openreZregister_extension�platformZ
register_saveZ
register_mimerX�open�argvZimfr`rrcr)rpZ	startfiler
r
r
r�<module>sH"	
.w1-