
    biA                     h    d dl mZ d dlZd dlZd dlmZ ddlmZ ddlm	Z	 ddl
mZ  G d d	e	e      Zy)
    )ListN)Image   )ConfigMixin)
ModelMixin)PIL_INTERPOLATIONc                   Z     e Zd Z fdZddeej                  j                     fdZ xZS )IFWatermarkerc                 z    t         |           | j                  dt        j                  d             d | _        y )Nwatermark_image)>   r      )super__init__register_buffertorchzeroswatermark_image_as_pil)self	__class__s    e/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/diffusers/pipelines/deepfloyd_if/watermark.pyr   zIFWatermarker.__init__   s0    .K0HI&*#    imagesc                    |d   j                   }|d   j                  }|xs |}t        ||z  ||z        }|dk  rt        ||z        t        ||z        fn||f\  }}d||z  }	}|	|z  dz  }
t        |
dz        |t        d|
z        z
  |t        d|
z        z
  }}}| j                  c| j
                  j                  t        j                        j                         j                         }t        j                  |d      }|| _        | j                  j                  ||ft        d	   d 
      }|D ]1  }|j                  |||z
  ||z
  ||f|j!                         d          3 |S )Nr      i   g      ?r      RGBA)modebicubic)reducing_gap)boxmask)heightwidthminintr   r   tor   uint8cpunumpyr   	fromarrayresizer   pastesplit)r   r   sample_sizehwcoefimg_himg_wS1S2Kwm_sizewm_xwm_yr   wm_imgpil_imgs                    r   apply_watermarkzIFWatermarker.apply_watermark   s}    1I1IOO!&Q1{?AO49=AHs1t8}51vu%%-B"W!!b&k53rAv;+>BQRF@St&&."2255ekkBFFHNNPO#oooFKO*9D',,33g 1) <4 4 
  	mGMM&tg~tg~tT&RY_YeYeYghjYkMl	m r   )N)	__name__
__module____qualname__r   r   PILr   r>   __classcell__)r   s   @r   r
   r
      s!    +d399??&; r   r
   )typingr   	PIL.ImagerB   r   r   configuration_utilsr   models.modeling_utilsr   utilsr   r
    r   r   <module>rJ      s(        . / &"J "r   