o
    b"<f	                     @   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/kck/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IOError)r   r   r   r   is_image   s   zPillowBackend.is_imagec                 C   s>   t tdd}||jtjd}t }|j|d|dd |S )NCKEDITOR_IMAGE_QUALITYr   RGBJPEGT)formatqualityoptimize)	getattrr   resizesizer   	ANTIALIAS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=| 
|}dtj|d }| j||}n| j}| j|| j}|sP| || |S )NCKEDITOR_FORCE_JPEG_COMPRESSIONFis_animatedz{}.jpgr   )r   r   r!   r
   r   r   r   r   hasattrr&   r$   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|ddd | j||S )Nr   r   T)r   r   )r   get_thumb_filenamer   r   r   r    
ValueErrorr   	thumbnailTHUMBNAIL_SIZEr   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$   r/   r+   r   r   r   r   r	      s    
r	   )r(   ior   django.confr   django.utils.functionalr   PILr   ckeditor_uploaderr   r   r3   r	   r   r   r   r   <module>   s    