From 9ef6baf2ed234e97a8457bd1441dfabf3c9d2c0d Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Fri, 8 Aug 2025 07:36:11 -0400 Subject: [PATCH] use `utf_16_be` as primary metadata decoding Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 9 +++------ cli/image-exif.py | 5 ++++- installer.py | 2 +- modules/images.py | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f6182695..b7a1dcd33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,8 @@ # Change Log for SD.Next -## Blockers +## Update for 2025-08-08 -- Qwen with offloading: - -## Update for 2025-08-07 - -### Highlights for 2025-08-07 +### Highlights for 2025-08-08 Several new and updated models: [Qwen-Image](https://qwenlm.github.io/blog/qwen-image/), [FLUX.1-Krea-Dev](https://www.krea.ai/blog/flux-krea-open-source-release), [Chroma](https://huggingface.co/lodestones/Chroma), [SkyReels-V2](https://huggingface.co/Skywork/SkyReels-V2-DF-14B-720P-Diffusers), [Wan-VACE](https://huggingface.co/Wan-AI/Wan2.1-VACE-14B-diffusers) Plus continuing with major **UI** work, there is new embedded **Docs/Wiki** search, redesigned real-time **hints**, built-in **GPU monitor**, **CivitAI** integration and more! @@ -106,6 +102,7 @@ And (*as always*) many bugfixes and improvements to existing features! - fix openvino backend failing to compile - fix nunchaku fallback on unsupported model - fix nunchaku windows download links + - use `utf_16_be` as primary metadata decoding - reapply offloading on ipadapter load - api set default script-name - avoid forced gc and rely on thresholds diff --git a/cli/image-exif.py b/cli/image-exif.py index 9a48d2dd7..fc2573220 100755 --- a/cli/image-exif.py +++ b/cli/image-exif.py @@ -64,7 +64,10 @@ class Exif: # pylint: disable=single-string-used-for-slots def decode(self, s: bytes): remove_prefix = lambda text, prefix: text[len(prefix):] if text.startswith(prefix) else text # pylint: disable=unnecessary-lambda-assignment - for encoding in ['utf-8', 'utf-16', 'ascii', 'latin_1', 'cp1252', 'cp437']: # try different encodings + # from encodings.aliases import aliases + # cp = list(set(aliases.values())) + for encoding in ['utf_16_be', 'utf-8', 'utf-16', 'ascii', 'latin_1', 'cp1252', 'cp437']: # try different encodings + # for encoding in cp: try: s = remove_prefix(s, b'UNICODE') s = remove_prefix(s, b'ASCII') diff --git a/installer.py b/installer.py index ed6315585..800edd0a7 100644 --- a/installer.py +++ b/installer.py @@ -593,7 +593,7 @@ def check_diffusers(): t_start = time.time() if args.skip_all or args.skip_git: return - sha = '7ea065c5070a5278259e6f1effa9dccea232e62a' # diffusers commit hash + sha = '7b10e4ae65cc5830c581fba58638f5afb6e587cf' # 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 '' diff --git a/modules/images.py b/modules/images.py index c8d13f92c..9c3992d23 100644 --- a/modules/images.py +++ b/modules/images.py @@ -218,7 +218,7 @@ def save_image(image, def safe_decode_string(s: bytes): remove_prefix = lambda text, prefix: text[len(prefix):] if text.startswith(prefix) else text # pylint: disable=unnecessary-lambda-assignment - for encoding in ['utf-8', 'utf-16', 'ascii', 'latin_1', 'cp1252', 'cp437']: # try different encodings + for encoding in ['utf_16_be', 'utf-8', 'utf-16', 'ascii', 'latin_1', 'cp1252', 'cp437']: # try different encodings try: s = remove_prefix(s, b'UNICODE') s = remove_prefix(s, b'ASCII')