Skip to content

Commit

Permalink
Transparent image infotext + saving support
Browse files Browse the repository at this point in the history
  • Loading branch information
catboxanon committed Mar 1, 2024
1 parent aeb1099 commit c0f2c85
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
21 changes: 20 additions & 1 deletion lib_layerdiffusion/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import cv2
import numpy as np

from PIL import Image
from tqdm import tqdm
from typing import Optional, Tuple
from diffusers.configuration_utils import ConfigMixin, register_to_config
Expand All @@ -11,6 +12,9 @@
import ldm_patched.modules.model_management as model_management
from ldm_patched.modules.model_patcher import ModelPatcher

from modules import images, processing
from modules.shared import opts


def zero_module(module):
"""
Expand Down Expand Up @@ -262,7 +266,22 @@ def wrapper(func, latent):

pngs = torch.cat([fg, alpha], dim=3)
pngs = (pngs * 255.0).detach().cpu().float().numpy().clip(0, 255).astype(np.uint8)
for png in pngs:
for i, png in enumerate(pngs):
png = Image.fromarray(png)
infotext = processing.Processed(p, []).infotext(p, i)

if getattr(opts, 'layerdiffusion_save_transparent_images', False):
images.save_image(
image=png,
path=p.outpath_samples,
basename="",
seed=p.seeds[i],
prompt=p.prompts[i],
extension=getattr(opts, 'samples_format', 'png'),
info=infotext,
p=p,
suffix="-transparent"
)
p.extra_result_images.append(png)

return vis
Expand Down
12 changes: 11 additions & 1 deletion scripts/forge_layerdiffusion.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import numpy as np
import copy

from modules import scripts
from modules import scripts, script_callbacks, shared
from modules.processing import StableDiffusionProcessing
from lib_layerdiffusion.enums import ResizeMode
from lib_layerdiffusion.utils import rgba2rgbfp32, to255unit8, crop_and_resize_image
Expand Down Expand Up @@ -246,3 +246,13 @@ def conditioning_modifier(model, x, timestep, uncond, cond, cond_scale, model_op
p.sd_model.forge_objects.unet = unet
p.sd_model.forge_objects.vae = vae
return

def on_ui_settings():
section = ("Layer Diffusion", "Layer Diffusion")

shared.opts.add_option(
"layerdiffusion_save_transparent_images",
shared.OptionInfo(False, "Save images with transparency", section=section),
)

script_callbacks.on_ui_settings(on_ui_settings)

0 comments on commit c0f2c85

Please sign in to comment.