mirror of
https://github.com/vladmandic/automatic
synced 2026-09-18 16:54:33 +02:00
fix image str decode and update requirements
Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
+2
-1
@@ -1,6 +1,6 @@
|
||||
# Change Log for SD.Next
|
||||
|
||||
## Update for 2025-09-28
|
||||
## Update for 2025-09-29
|
||||
|
||||
- **Models**
|
||||
- [WAN 2.2 14B VACE](https://huggingface.co/alibaba-pai/Wan2.2-VACE-Fun-A14B)
|
||||
@@ -83,6 +83,7 @@
|
||||
- benchmark: remove forced sampler from system info benchmark
|
||||
- xyz-grid: fix xyz grid with random seeds
|
||||
- reference: fix download for sd15/sdxl reference models
|
||||
- fix checks in init/mask image decode
|
||||
|
||||
## Update for 2025-09-15
|
||||
|
||||
|
||||
Submodule extensions-builtin/sdnext-modernui updated: b189fac67d...620fc402ad
+1
-1
@@ -608,7 +608,7 @@ def check_diffusers():
|
||||
if args.skip_git:
|
||||
install('diffusers')
|
||||
return
|
||||
sha = '1448b035859dd57bbb565239dcdd79a025a85422' # diffusers commit hash
|
||||
sha = '64a5187d96f9376c7cf5123db810f2d2da79d7d0' # diffusers commit hash
|
||||
pkg = pkg_resources.working_set.by_key.get('diffusers', None)
|
||||
minor = int(pkg.version.split('.')[1] if pkg is not None else -1)
|
||||
cur = opts.get('diffusers_version', '') if minor > -1 else ''
|
||||
|
||||
@@ -280,13 +280,38 @@ def validate_sample(tensor):
|
||||
return cast
|
||||
|
||||
|
||||
def decode_images(image):
|
||||
if isinstance(image, list):
|
||||
decoded = []
|
||||
for i, img in enumerate(image):
|
||||
if isinstance(img, str):
|
||||
try:
|
||||
decoded.append(helpers.decode_base64_to_image(img, quiet=True))
|
||||
except Exception as e:
|
||||
shared.log.error(f'Decode image[{i}]: {e}')
|
||||
elif isinstance(img, Image.Image):
|
||||
decoded.append(img)
|
||||
else:
|
||||
shared.log.error(f'Decode image[{i}]: {type(img)} unknown type')
|
||||
return decoded
|
||||
elif isinstance(image, str):
|
||||
try:
|
||||
return helpers.decode_base64_to_image(image, quiet=True)
|
||||
except Exception as e:
|
||||
shared.log.error(f'Decode image: {e}')
|
||||
elif isinstance(image, Image.Image):
|
||||
return image
|
||||
else:
|
||||
shared.log.error(f'Decode image: {type(image)} unknown type')
|
||||
return None
|
||||
|
||||
|
||||
def resize_init_images(p):
|
||||
if getattr(p, 'image', None) is not None and getattr(p, 'init_images', None) is None:
|
||||
p.init_images = [p.image]
|
||||
|
||||
if getattr(p, 'init_images', None) is not None and len(p.init_images) > 0:
|
||||
if isinstance(p.init_images[0], str):
|
||||
p.init_images = [helpers.decode_base64_to_image(i, quiet=True) for i in p.init_images]
|
||||
p.init_images = decode_images(p.init_images)
|
||||
vae_scale_factor = sd_vae.get_vae_scale_factor()
|
||||
tgt_width, tgt_height = vae_scale_factor * math.ceil(p.init_images[0].width / vae_scale_factor), vae_scale_factor * math.ceil(p.init_images[0].height / vae_scale_factor)
|
||||
if p.init_images[0].size != (tgt_width, tgt_height):
|
||||
@@ -296,16 +321,13 @@ def resize_init_images(p):
|
||||
p.width = tgt_width
|
||||
sd_hijack_hypertile.hypertile_set(p)
|
||||
if getattr(p, 'mask', None) is not None and p.mask is not None and p.mask.size != (tgt_width, tgt_height):
|
||||
if isinstance(p.mask[0], str):
|
||||
p.mask = [helpers.decode_base64_to_image(i, quiet=True) for i in p.mask]
|
||||
p.mask = decode_images(p.mask)
|
||||
p.mask = images.resize_image(1, p.mask, tgt_width, tgt_height, upscaler_name=None)
|
||||
if getattr(p, 'init_mask', None) is not None and p.init_mask is not None and p.init_mask.size != (tgt_width, tgt_height):
|
||||
if isinstance(p.init_mask[0], str):
|
||||
p.init_mask = [helpers.decode_base64_to_image(i, quiet=True) for i in p.init_mask]
|
||||
p.init_mask = decode_images(p.init_mask)
|
||||
p.init_mask = images.resize_image(1, p.init_mask, tgt_width, tgt_height, upscaler_name=None)
|
||||
if getattr(p, 'mask_for_overlay', None) is not None and p.mask_for_overlay is not None and p.mask_for_overlay.size != (tgt_width, tgt_height):
|
||||
if isinstance(p.mask_for_overlay, str):
|
||||
p.mask_for_overlay = helpers.decode_base64_to_image(p.mask_for_overlay, quiet=True)
|
||||
p.mask_for_overlay = decode_images(p.mask_for_overlay)
|
||||
p.mask_for_overlay = images.resize_image(1, p.mask_for_overlay, tgt_width, tgt_height, upscaler_name=None)
|
||||
return tgt_width, tgt_height
|
||||
return p.width, p.height
|
||||
|
||||
+1
-5
@@ -44,7 +44,7 @@ tqdm==4.67.1
|
||||
accelerate==1.10.1
|
||||
opencv-contrib-python-headless==4.11.0.86
|
||||
einops==0.8.1
|
||||
huggingface_hub==0.35.0
|
||||
huggingface_hub==0.35.3
|
||||
numexpr==2.11.0
|
||||
numpy==2.1.2
|
||||
pandas==2.3.1
|
||||
@@ -69,7 +69,3 @@ seam-carving
|
||||
ruff
|
||||
pylint
|
||||
pre-commit
|
||||
|
||||
# block
|
||||
torch!=2.5.0
|
||||
torchvision!=0.20.0
|
||||
|
||||
Reference in New Issue
Block a user