o
    Gi                     @   s^   d dl Zd dlZddlmZ e rd dlmZ dZdd eedd D Z	G d	d
 d
Z
dS )    N   ) is_invisible_watermark_available)WatermarkEncoderl   1 O c                 C   s   g | ]}t |qS  )int).0bitr   r   e/home/ubuntu/.local/lib/python3.10/site-packages/diffusers/pipelines/stable_diffusion_xl/watermark.py
<listcomp>   s    r
      c                   @   s$   e Zd Zdd ZdejfddZdS )StableDiffusionXLWatermarkerc                 C   s"   t | _t | _| jd| j d S )Nbits)WATERMARK_BITS	watermarkr   encoderset_watermarkselfr   r   r	   __init__   s   z%StableDiffusionXLWatermarker.__init__imagesc                    s   |j d dk r	|S d|d d   dddd  }|d d d d d d d d df } fd	d
|D }t|}t|dddd}tj	d|d d  ddd}|S )N      r   g      ?r   r      c                    s2   g | ]} j |d dddddddf qS )dwtDctNr   )r   encode)r   imager   r   r	   r
   #   s   2 z@StableDiffusionXLWatermarker.apply_watermark.<locals>.<listcomp>g      g      ?)minmax)
shapecpupermutefloatnumpynparraytorch
from_numpyclamp)r   r   r   r   r	   apply_watermark   s   ("
z,StableDiffusionXLWatermarker.apply_watermarkN)__name__
__module____qualname__r   r&   Tensorr)   r   r   r   r	   r      s    r   )r#   r$   r&   utilsr   imwatermarkr   WATERMARK_MESSAGEbinr   r   r   r   r   r	   <module>   s    