# HEIC/HEIF in Tailorpix ## Verarbeitung HEIC/HEIF wird erst bei einer entsprechenden Eingabedatei dekodiert. Ein eigener klassischer Worker lädt den unveränderten JavaScript-Loader `heic/libheif.js` und separat `heic/libheif.wasm`. Der Loader und WASM werden nicht in die Anwendung gebündelt. Bilder bleiben im Gerät; die Web-App lädt Decoderdateien vom eigenen Hosting, die Desktop-App liefert sie offline mit. Auch die Web-Schriften werden vom eigenen Hosting geladen. Es wird das Hauptbild ausgewählt, falls ein Container mehrere Bilder enthält. Die Oberfläche zeigt dann einen Hinweis. Standardausgabe ist JPEG, bei Transparenz PNG. Die Pipeline arbeitet mit 8-Bit-RGBA; HDR-Hilfsdaten, Tiefenbilder und Live-Photo-Videos werden nicht in das Zielbild übernommen. Explizit sind JPEG, PNG und WebP möglich. Vorschau und Originalseite des Vergleichs werden aus den dekodierten Pixeln als lokales PNG erzeugt. Ein beschädigter Container erzeugt eine verständliche Fehlermeldung. Bilder über 64 Millionen Pixel werden zur Begrenzung des Speicherbedarfs abgewiesen. Falls der WASM-Decoder nicht verfügbar ist, versucht die Pipeline den nativen Browser-Decoder. ## Versionen und Quellen - libheif-js **1.23.5**, npm-Tarball: https://registry.npmjs.org/libheif-js/-/libheif-js-1.23.5.tgz (Lockfile hält Integrität fest). - libheif **1.23.5**, Quellstand `413e2a87e6a70b3eccc3a3adc5801179dd2d9e00`: https://github.com/strukturag/libheif/tree/413e2a87e6a70b3eccc3a3adc5801179dd2d9e00 ; Quellarchiv: https://github.com/strukturag/libheif/archive/413e2a87e6a70b3eccc3a3adc5801179dd2d9e00.tar.gz - libde265 **1.0.15**, Quellarchiv: https://github.com/strukturag/libde265/releases/download/v1.0.15/libde265-1.0.15.tar.gz - Emscripten-Build-Repository, Release v1.23.5, Commit `5c8968a44e9c68ae677e24790d77d001ed7fe7cc`: https://github.com/catdad-experiments/libheif-emscripten/tree/5c8968a44e9c68ae677e24790d77d001ed7fe7cc - JavaScript-Packaging und Build-Anleitung: https://github.com/catdad-experiments/libheif-js/tree/d8ec4bc3bc5bf8055975577bccbbc7e1d7313c2d ; Quellarchiv: https://github.com/catdad-experiments/libheif-js/archive/d8ec4bc3bc5bf8055975577bccbbc7e1d7313c2d.tar.gz ; der genaue npm-Tarball enthält die tatsächlich verwendeten Dateien. Die WASM-Versionsstrings bestätigen libheif 1.23.5 und libde265 1.0.15. Die Release-Build-Konfiguration aktiviert libde265 und deaktiviert standardmäßig AOM, WebCodecs, OpenJPEG und unkomprimierte Codecs. Der Loader enthält de265-Exports und keine x265-Exports. Namen anderer optionaler Plugins in WASM-Strings allein sind kein Beleg für deren Einbindung. ## Reproduktion und Austausch Tailorpix verändert Loader oder WASM nicht. `npm ci` und `npm run build` kopieren `node_modules/libheif-js/libheif-wasm/libheif.js` und `.wasm` unverändert nach `dist/heic/` bzw. `dist-desktop/heic/`. Zum Neubau des Decoders das oben genannte Emscripten-Build-Repository am angegebenen Commit samt libheif-Submodul auschecken. Der Release-Workflow nutzt Emscripten **3.1.61**. Er führt libheifs `scripts/install-ci-linux.sh` und `scripts/prepare-ci.sh` aus und ändert für den WASM-Build die Aufrufparameter in `scripts/run-ci.sh` zu `USE_WASM=1 USE_TYPESCRIPT=1 USE_UNSAFE_EVAL=0`. Die eigentlichen Codec-Build-Schritte und die Download-URL für libde265 1.0.15 stehen in libheifs `build-emscripten.sh`. Anschließend kopiert `dist-prep.sh wasm` die Ergebnisse. Die npm-Packaging-Transformation erfolgt in `libheif-js/scripts/install.js`. Die beiden Dateien in `heic/` können durch einen kompatiblen eigenen Build ersetzt werden. Danach die Seite vollständig neu laden. Sie liegen unter festen Dateinamen und werden ohne Integritätsbindung geladen. Bei der Mac-App kann das ASAR-Paket mit dem offiziellen `@electron/asar`-Werkzeug extrahiert und mit geänderten `dist-desktop/heic/`-Dateien neu gepackt werden; eigene Builds können lokal ad hoc signiert werden. Es sind keine Tailorpix-Lizenzschlüssel oder Freischaltungen nötig. Die LGPL/GPL-Lizenztexte und Copyright-Hinweise stehen in `licenses/heic/` und werden von der Lizenzseite verlinkt. Änderungen an den LGPL-Bibliotheken und Reverse Engineering zum Debuggen solcher Änderungen werden durch Tailorpix nicht untersagt. Diese Ausnahme muss auch in künftigen Nutzungsbedingungen/EULAs erhalten bleiben. ## Tests `npm run test:heic` nutzt die öffentliche Datei `examples/example.heic` aus dem genannten libheif-Quellstand. Sie enthält mehrere Bilder. Geprüft werden Hauptbildauswahl, Dekodierung nach PNG und JPEG, Größe 1280 × 854, Skalierung auf 800 × 534, sichtbare Vorschau und Vergleich, spätes Laden beider Decoderdateien sowie beschädigte Eingaben und blockiertes Decoder-WASM. Web- und Desktop-Smoke-Tests decken die übrigen Formate weiterhin ab. HEVC-Patentfragen und die rechtliche Abschlussprüfung bleiben wie im Projektplan vor dem ersten Verkauf vorgesehen.