o
    پh"                  	   @   s   d dl Z d dlZddlmZmZ ddlmZ ddlmZ dd Z	ddd	d	d
ddddZ
G dd dejZdd ZG dd dejZede eejee	 eeje eejd eejg d dS )    N   )Image	ImageFile)i16be)o8c                 C   s   t | dkot| dkS )N     )leni16)prefix r   X/home/www/facesmatcher.com/frenv_dlib/lib/python3.10/site-packages/PIL/SgiImagePlugin.py_accept!   s   r   LL;16BRGBzRGB;16BRGBAzRGBA;16B))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r      r   )r   r   r   )r   r      )r   r   r   c                   @   s   e Zd ZdZdZdd ZdS )SgiImageFileZSGIzSGI Image File Formatc              	   C   sx  d}| j |}t|sd}t||d }|d }t|d}t|d}t|d}t|d}	|||	f}
d	}zt|
 }W n	 tyD   Y nw |d	krOd
}t|||f| _|dd | _	| j	dkrdd| _
d}|dkr|| | }|dkrdd| j || j	d|ffg| _d S g | _|}| j	D ]}| jdd| j ||d|ff ||7 }qd S |dkrdd| j ||||ffg| _d S d S )N   zNot an SGI image filer   r   r         
    Unsupported SGI image mode;r   r   z	image/rgbSGI16)r   r   rawr   Zsgi_rle)fpreadr   
ValueErrorr
   MODESKeyError_sizesplitmodeZcustom_mimetypesizeZtileappend)selfZheadlensmsgcompressionbpc	dimensionxsizeysizezsizeZlayoutrawmodeorientationpagesizeoffsetlayerr   r   r   _open7   sV   










zSgiImageFile._openN)__name__
__module____qualname__formatformat_descriptionr8   r   r   r   r   r   3   s    r   c              	   C   sV  | j dkr| j dkr| j dkrd}t|| j}|dd}|dvr(d}t|d	}d
}d}d}	| j\}
}| j dkrA|dkrAd}	n| j dkrHd}	t| j }|	dksU|	dkrWd}t|  |krod| dt|   }t|d}d}tj	tj
|d }|dd}d}|td| |t| |t| |td|	 |td|
 |td| |td| |td| |td| |tdd |td| |tdd |td| |tdd d}|dkr
d}|  D ]}||d|d| qt|dr)|  d S d S )Nr   r   r   r   r.   r   )r   r   z%Unsupported number of bytes per pixelr   r   r   r   r   z(incorrect number of bands in SGI write: z vs    asciiignorez>hz>Hz>lZ4s    Z79sr+   Z404sr   r   flush)r'   r"   Zencoderinfogetr(   r	   Zgetbandsospathsplitextbasenameencodewritestructpackr   r&   tobyteshasattrrB   )imr    filenamer,   infor.   r4   Zmagic_numberZrledimxyzZpinminZpinmaxZimg_nameZcolormapr3   channelr   r   r   _save}   sd   



rV   c                   @   s   e Zd ZdZdd ZdS )SGI16DecoderTc           	      C   s   | j \}}}| jj| jj }t| j}| jd t|D ]%}t	
d| jj| jjf}|| jd| dd|| | j|j| qdS )Nr   r   r   r   r   )r   r   )argsstater0   r1   r	   r'   fdseekranger   new	frombytesr!   rN   Zputband)	r*   bufferr3   Zstrider4   r5   r2   ZbandrU   r   r   r   decode   s   
zSGI16Decoder.decodeN)r9   r:   r;   Z	_pulls_fdr`   r   r   r   r   rW      s    rW   r   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)rD   rJ   r   r   r   _binaryr   r
   r   r   r#   r   rV   Z	PyDecoderrW   Zregister_decoderZregister_openr<   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   <module>   s.   JL