a
    Ad                     @   sn   d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZ ddedddZdeed	d
dZdS )    N)Image)sharedimagesdevicesscriptsscripts_postprocessing	ui_commongeneration_parameters_copypaste)optsT)save_outputc                G   sj  t   tjjdd g }dd }	| dkr8|dkr8|}
ntjpBtj}
d}|	| |||D ]\}}|tj_t	
|\}}|r||d< t|d}tj|| tjr|d urtjtj|d	 }nd}d
dd |j D }tjr||j_||jjd< |r,t	j|j|
|d d tj|dddd|d d | dks<|rH||j |  qVt   |t |dfS )Nextras)jobc              	   s   s   | dkrZ|D ]J}t |tjr&|}d}n&ttj|j}tj|jd }||fV  qn| dkrt	j
jrrJ d|s~J dt	|}|D ]4}zt|}W n ty   Y qY n0 ||fV  qn|sJ d|d fV  d S )N    r      z,--hide-ui-dir-config option must be disabledzinput directory not selectedzimage not selected)
isinstancer   openospathabspathnamesplitext	orig_namer   cmd_optshide_ui_dir_config	listfiles	Exception)extras_modeimageimage_folder	input_dirimgfn
image_listfilename r%   >/var/www/html/stable-diffusion-webui/modules/postprocessing.py
get_images   s(    

z&run_postprocessing.<locals>.get_imagesr   r   
parametersRGBr   z, c                 S   s8   g | ]0\}}|d ur||kr |n| dt | qS )Nz: )r	   quote).0kvr%   r%   r&   
<listcomp>B       z&run_postprocessing.<locals>.<listcomp>postprocessingTF)r   basenameseedprompt	extensioninfoshort_filename	no_promptgridpnginfo_section_nameexisting_infoforced_filename)!r   torch_gcr   statebeginr
   outdir_samplesoutdir_extras_samplestextinfor   read_info_from_imager   PostprocessedImageconvertr   scripts_postprocrunuse_original_name_batchr   r   r   r1   joinr5   itemsenable_pnginfor   
save_imagesamples_formatappendcloser   plaintext_to_html)r   r   r   r    
output_dirshow_extras_resultsr   argsoutputsr'   Zoutpathinfotext
image_datar   r(   existing_pnginfoppr1   r%   r%   r&   run_postprocessing	   s:    (
rX   )upscale_firstr   c                 C   sP   t j||
||||||dd|i||	dd}t| |||||g|R d|iS )zold handler for API)Zupscale_modeZ
upscale_byZupscale_to_widthZupscale_to_heightZupscale_cropZupscaler_1_nameZupscaler_2_nameZupscaler_2_visibilitygfpgan_visibility)codeformer_visibilitycodeformer_weight)ZUpscaleGFPGAN
CodeFormerr   )r   rE   create_args_for_runrX   )r   resize_moder   r   r    rP   rQ   rZ   r[   r\   Zupscaling_resizeZupscaling_resize_wZupscaling_resize_hZupscaling_cropZextras_upscaler_1Zextras_upscaler_2Zextras_upscaler_2_visibilityrY   r   rR   r%   r%   r&   
run_extrasU   s"    ra   )T)r   PILr   modulesr   r   r   r   r   r   r	   modules.sharedr
   boolrX   ra   r%   r%   r%   r&   <module>   s
   $L