U
    
d	                     @   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)utilsZ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   M/tmp/pip-unpacked-wheel-g6xi1tgp/ckeditor_uploader/backends/pillow_backend.py__init__   s    zPillowBackend.__init__c              	   C   sV   zBz"tt| j    W W "dS  tk
r>   Y W 
dS X W 5 | j d X d S )Nr   TF)r	   seekr   openr   readverifyOSError)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 )NZCKEDITOR_IMAGE_QUALITYr   RGBJPEGT)formatqualityoptimize)	getattrr   resizesizer   	ANTIALIASconvertr   save)r   imager   Z	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	}|rz|sz| 
|}tj|d  d}| j||}n| j}| j|| j}|s| || |S )NZCKEDITOR_FORCE_JPEG_COMPRESSIONFis_animatedr   z.jpg)r   r
   r   r	   r   r   r   r   hasattrr"   r!   ospathsplitextcreate_thumbnail)r   filepathZ
saved_pathr    Zshould_compressr"   r	   r   r   r   save_as&   s    
zPillowBackend.save_asc                 C   s   t |}t }zt|d}W n0 tk
rT   | j|}t|d}Y nX |t	tj
 |j|ddd | j||S )Nr   r   T)r   r   )r   Zget_thumb_filenamer   r   r   r   
ValueErrorr
   Z	thumbnailTHUMBNAIL_SIZEr   r   )r   r	   	file_pathZthumbnail_filenameZ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   Zdjango.confr   Zdjango.utils.functionalr   ZPILr   Zckeditor_uploaderr   r   r+   r   r   r   r   r   <module>   s   