Draaien in de bijsnijdialoog decodeert het bronbestand onbegrensd op de interface #2728

Open
opened 2026-11-02 22:20:46 +00:00 by brenno · 0 comments
Owner

Wat er mis is

Eén kwartslag in de bijsnijdialoog bevriest het venster. De dialoog leest het bronbestand synchroon en roept img.decodeImage aan binnen setState, zonder de 4096-grens. Een foto van 6000×4000 is ongeveer 92 MiB gedecodeerd, plus een tweede buffer voor de rotatie, en het opnieuw coderen naar PNG gebeurt op dezelfde thread. De renderlaag zou hetzelfde bestand tot 4096 px afschalen. Logoherkenning en de HTML-insluiting weigeren die maat wél vóór het decoderen.

Bewijs

  • lib/widgets/slides/image_crop_dialog.dart _rotate: setState met img.decodeImage op _originalBytes.
  • _loadOriginalBytes leest het bestand met readAsBytesSync.
  • Bij het wegschrijven decodeert het pad nog eens.
  • lib/utils/image_limits.dart is de grens die dit pad niet erft. lib/services/import/logo_detection.dart laat de bestaande proef zien.

Voorstel

Eerst de afmeting peilen. Boven 4096 niet decoderen of eerst schalen. Eén decode hergebruiken voor voorbeeld en bestand, en dat werk van de interface-isolate af halen.

Geen nieuwe afhankelijkheid. Het bestandsformaat verandert niet.

## Wat er mis is Eén kwartslag in de bijsnijdialoog bevriest het venster. De dialoog leest het bronbestand synchroon en roept `img.decodeImage` aan binnen `setState`, zonder de 4096-grens. Een foto van 6000×4000 is ongeveer 92 MiB gedecodeerd, plus een tweede buffer voor de rotatie, en het opnieuw coderen naar PNG gebeurt op dezelfde thread. De renderlaag zou hetzelfde bestand tot 4096 px afschalen. Logoherkenning en de HTML-insluiting weigeren die maat wél vóór het decoderen. ## Bewijs - `lib/widgets/slides/image_crop_dialog.dart` `_rotate`: `setState` met `img.decodeImage` op `_originalBytes`. - `_loadOriginalBytes` leest het bestand met `readAsBytesSync`. - Bij het wegschrijven decodeert het pad nog eens. - `lib/utils/image_limits.dart` is de grens die dit pad niet erft. `lib/services/import/logo_detection.dart` laat de bestaande proef zien. ## Voorstel Eerst de afmeting peilen. Boven 4096 niet decoderen of eerst schalen. Eén decode hergebruiken voor voorbeeld en bestand, en dat werk van de interface-isolate af halen. Geen nieuwe afhankelijkheid. Het bestandsformaat verandert niet.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2728
No description provided.