Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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'),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then here should ignore samples_format and fix to png I supposed?
since webp has bug and jpeg has no transparent, so only 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)