From f9c38786bb728ccb7697b13e5ca99f6233e3cc47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Breitbart?= Date: Sat, 5 Sep 2026 11:53:50 +0200 Subject: [PATCH] fix IIP resize, fix viewport resize --- addons/addon-image/src/IIPHandler.ts | 11 ++--------- addons/addon-image/src/ImageStorage.ts | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/addons/addon-image/src/IIPHandler.ts b/addons/addon-image/src/IIPHandler.ts index 2957bb631..a07cf2f08 100644 --- a/addons/addon-image/src/IIPHandler.ts +++ b/addons/addon-image/src/IIPHandler.ts @@ -148,9 +148,6 @@ export class IIPHandler implements IOscHandler, IResetHandler { // fallthrough for SequenceType.FILE & SequenceType.FILEEND - let w = 0; - let h = 0; - // early exit condition chain let cond: number | boolean; let metrics = UNSUPPORTED_TYPE; @@ -158,12 +155,7 @@ export class IIPHandler implements IOscHandler, IResetHandler { if (cond = !this._dec.end()) { metrics = imageType(this._dec.data8); if (cond = metrics.mime !== 'unsupported') { - w = metrics.width; - h = metrics.height; - if (cond = w && h && w * h < this._opts.pixelLimit) { - [w, h] = this._resize(w, h); - cond = w && h && w * h < this._opts.pixelLimit; - } else { + if (!(cond = metrics.width && metrics.height && metrics.width * metrics.height < this._opts.pixelLimit)) { console.warn(`IIP: image dimension issue ${metrics.width}x${metrics.height}`); } } else { @@ -194,6 +186,7 @@ export class IIPHandler implements IOscHandler, IResetHandler { this._dec.release(); return createImageBitmap(bmSrc) .then(bm => { + const [w, h] = this._resize(metrics.width, metrics.height); this._storage.addImage(new Drawable(bm), imgBlob, metrics, w / metrics.width, h / metrics.height); return true; }) diff --git a/addons/addon-image/src/ImageStorage.ts b/addons/addon-image/src/ImageStorage.ts index a6023cb15..711f008d7 100644 --- a/addons/addon-image/src/ImageStorage.ts +++ b/addons/addon-image/src/ImageStorage.ts @@ -455,7 +455,7 @@ export class ImageStorage implements IDisposable { continue; } // found an image tile at oldCol, check if it qualifies for right exapansion - const tilesPerRow = Math.ceil((imgSpec.src.width) / imgSpec.cellSize.width); + const tilesPerRow = Math.ceil(imgSpec.src.width * imgSpec.prescaleX / imgSpec.cellSize.width); if ((e.tileId % tilesPerRow) + 1 >= tilesPerRow) { continue; }