o
    =g	                     @   sb   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 eeddZG d	d
 d
ZdS )    N)BytesIO)settings)cached_property)Image)utilsCKEDITOR_THUMBNAIL_SIZE)K   r   c                   @   s8   e Zd Zdd Zedd Zdd Zdd Zd	d
 ZdS )PillowBackendc                 C   s   || _ || _d S )N)file_objectstorage_engine)selfr   r
    r   \/var/www/html/venv/lib/python3.10/site-packages/ckeditor_uploader/backends/pillow_backend.py__init__   s   
zPillowBackend.__init__c              	   C   s`   z(zt t| j   W W | jd dS  ty(   Y W | jd dS w | jd w )Nr   TF)r   openr   r
   readverifyseekOSError)r   r   r   r   is_image   s   zPillowBackend.is_imagec                 C   s@   t tdd}||jtjjd}t }|j	|d|dd |S )NCKEDITOR_IMAGE_QUALITYr   RGBJPEGT)formatqualityoptimize)
getattrr   resizesizer   
ResamplingLANCZOSconvertr   save)r   imager   	image_tmpr   r   r   _compress_image   s
   zPillowBackend._compress_imagec                 C   s   | j s| j|| j}|S t| j}ttdd}t|do |j	}|r=|s=| 
|}tj|d  d}| j||}n| j}| j|| j}|sP| || |S )NCKEDITOR_FORCE_JPEG_COMPRESSIONFis_animatedr   z.jpg)r   r   r"   r
   r   r   r   r   hasattrr'   r%   ospathsplitextcreate_thumbnail)r   filepath
saved_pathr#   should_compressr'   r
   r   r   r   save_as&   s   
zPillowBackend.save_asc                 C   s   t |}t }z
t|d}W n ty)   | j|}t|d}Y nw |t	tj
j |j|ddd | j||S )Nr   r   T)r   r   )r   get_thumb_filenamer   r   r   r!   
ValueErrorr   	thumbnailTHUMBNAIL_SIZEr   r    r"   )r   r
   	file_paththumbnail_filenamethumbnail_ior#   r   r   r   r,   ;   s   
zPillowBackend.create_thumbnailN)	__name__
__module____qualname__r   r   r   r%   r0   r,   r   r   r   r   r	      s    
r	   )r)   ior   django.confr   django.utils.functionalr   PILr   ckeditor_uploaderr   r   r4   r	   r   r   r   r   <module>   s    