
    EvgT
                     J    d Z ddlZddlZddlmZ  G d de          ZddZdS )	zO
Utility functions for handling images.

Requires Pillow as you might imagine.
    N)Filec                   D    e Zd ZdZed             Zed             Zd ZdS )	ImageFilez
    A mixin for use alongside django.core.files.base.File, which provides
    additional features for dealing with images.
    c                 6    |                                  d         S )Nr   _get_image_dimensionsselfs    U/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/core/files/images.pywidthzImageFile.width       ))++A..    c                 6    |                                  d         S )N   r   r	   s    r   heightzImageFile.height   r   r   c                     t          | d          s1| j        }|                                  t          | |          | _        | j        S )N_dimensions_cache)close)hasattrclosedopenget_image_dimensionsr   )r
   r   s     r   r   zImageFile._get_image_dimensions   sH    t011 	MKEIIKKK%9$e%L%L%LD"%%r   N)__name__
__module____qualname____doc__propertyr   r   r    r   r   r   r      sc         
 / / X/ / / X/& & & & &r   r   Fc                 \   ddl m} |                                }t          | d          r,| }|                                }|                    d           n%	 t          | d          }n# t          $ r Y dS w xY wd}	 d}	 |                    |          }|sn	 |	                    |           nY# t          j        $ r,}|j        d                             d	          rn Y d
}~n#d
}~wt          j        $ r Y nt          $ r Y nw xY w|j        r8|j        j        |r|                                 S |                    |           S |dz  }	 |r|                                 dS |                    |           dS # |r|                                 w |                    |           w xY w)z
    Return the (width, height) of an image, given an open file or a path.  Set
    'close' to True to close the file at the end if it is initially in an open
    state.
    r   )r   readrb)NNTi   r   zError -5N   )PILr   Parserr   tellseekr   OSErrorr    feedzliberrorargs
startswithstructRuntimeErrorimagesizer   )	file_or_pathr   PillowImageFilepfilefile_pos
chunk_sizedataes	            r   r   r   #   s    100000  A|V$$ 	99;;		!	 d++DD 	  	  	 <<	 #  
	99Z((D t:    6!9''
33  DDDD <         w $w|  	 JJLLLLIIh !OJ1	2  	 JJLLLLLIIh  	 JJLLLLIIhsf   A) )
A76A7=E= B/ .E= /D>"C% E= %D7E= 9	DE= DE= E= =.F+)F)r   r-   r)   django.core.filesr   r   r   r   r   r   <module>r:      s}       " " " " " "& & & & & & & &,6  6  6  6  6  6 r   