a
    Sic>                     @   s.   d dl Z d dlZd dlZG dd dZeZdS )    Nc                   @   sf   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )StatNc                 C   sj   z |r| || _n
|  | _W n ty8   || _Y n0 t| jtsNtdttt| jd | _d S )Nz$first argument must be image or list   )		histogramhAttributeError
isinstancelist	TypeErrorrangelenbands)selfZimage_or_listmask r   I/var/www/html/django/DPS/env/lib/python3.9/site-packages/PIL/ImageStat.py__init__   s    zStat.__init__c                 C   s8   |dd dkrt |t| d|  }t| || |S )zCalculate missing attributeN   _get)r   getattrsetattr)r   idvr   r   r   __getattr__*   s
    zStat.__getattr__c                 C   s@   dd }g }t dt| jdD ]}||| j|d  q|S )z-Get min/max values for each band in the imagec                 S   s:   d}d}t dD ] }| | rt||}t||}q||fS )N   r   r   )r
   minmax)r   nxir   r   r   minmax6   s    
z Stat._getextrema.<locals>.minmaxr   r   Nr
   r   r   append)r   r   r   r   r   r   r   _getextrema3   s
    	zStat._getextremac              
   C   sB   g }t dt| jdD ]&}|ttj| j||d   q|S )z(Get total number of pixels in each layerr   r   )r
   r   r   r!   	functoolsreduceoperatoraddr   r   r   r   r   r   	_getcountD   s    $zStat._getcountc                 C   sR   g }t dt| jdD ]6}d}t dD ]}||| j||   7 }q&|| q|S )z#Get sum of all pixels in each layerr   r           r    )r   r   r   Z	layer_sumjr   r   r   _getsumL   s    zStat._getsumc                 C   sZ   g }t dt| jdD ]>}d}t dD ]"}||d t| j||   7 }q&|| q|S )z+Get squared sum of all pixels in each layerr   r   r)      )r
   r   r   floatr!   )r   r   r   sum2r*   r   r   r   _getsum2W   s     zStat._getsum2c                 C   s.   g }| j D ]}|| j| | j|   q
|S )z&Get average pixel level for each layer)r   r!   sumcountr'   r   r   r   _getmeanb   s    
zStat._getmeanc                 C   sd   g }| j D ]T}d}| j| d }|d }tdD ]"}|| j||   }||kr0 qTq0|| q
|S )z%Get median pixel level for each layerr   r,   r   )r   r1   r
   r   r!   )r   r   r   shalfbr*   r   r   r   
_getmedianj   s    
zStat._getmedianc                 C   s4   g }| j D ]$}|t| j| | j|   q
|S )zGet RMS for each layer)r   r!   mathsqrtr.   r1   r'   r   r   r   _getrmsy   s    
"zStat._getrmsc                 C   sD   g }| j D ]4}| j| }|| j| | j| d |  |  q
|S )zGet variance for each layerg       @)r   r1   r!   r.   r0   )r   r   r   r   r   r   r   _getvar   s
    

(zStat._getvarc                 C   s*   g }| j D ]}|t| j|  q
|S )z%Get standard deviation for each layer)r   r!   r7   r8   varr'   r   r   r   
_getstddev   s    
zStat._getstddev)N)__name__
__module____qualname__r   r   r"   r(   r+   r/   r2   r6   r9   r:   r<   r   r   r   r   r      s   
		r   )r#   r7   r%   r   Globalr   r   r   r   <module>   s   v