Open-Source-Lizenzen
Zuletzt aktualisiert: 26. September 2026
Die Konvertierung eines HEIC-Fotos findet hier in Ihrem eigenen Browser statt, und Ihr Foto wird dafür nicht hochgeladen. Dazu lädt Ihr Browser ein kleines Open-Source-Programm herunter, das HEIC lesen kann. Diese Seite nennt dessen Lizenz, wo sich der Quellcode befindet und wie Sie es neu kompilieren oder ersetzen können.
Kurz gesagt: Der Decoder ist unter der LGPL-3.0 lizenziert, wir haben ihn nicht verändert, Sie können den Quellcode, von dem wir glauben, dass er kompiliert wurde, von dieser Seite herunterladen (unten geben wir an, was wir verifiziert haben und was nicht), und Sie dürfen ihn für Ihren eigenen Gebrauch modifizieren, ersetzen und reverse-engineeren.
Was wir an Ihren Browser liefern
- libheif-js 1.23.2: ein Emscripten (WebAssembly)-Build von libheif 1.23.2, mit dem libde265 1.0.15 HEVC-Decoder enthalten. Lizenz von libheif, libde265 und dem libheif-js-Wrapper: GNU Lesser General Public License v3.0 (LGPL-3.0). Copyright struktur AG, Dirk Farin und die libheif / libde265 Mitwirkenden; libheif-js-Wrapper von Kiril Vatev und Mitwirkenden.
- Die Dateien wurden mit Emscripten 3.1.61 erstellt und können Emscripten-Laufzeitcode sowie Teile der musl C-Bibliothek enthalten. Diese Teile sind nicht LGPL-lizenziert: Sie unterliegen den MIT- / NCSA-Lizenzen, wiedergegeben in EMSCRIPTEN-NOTICE.txt. Diese Liste stammt aus dem Build-Skript und den Zeichenketten im Binärcode, nicht aus einer vollständigen Prüfung der kompilierten Datei.
- Unsere eigenen kleinen Dateien, /heic-worker.js und /heic-decode.js, sind einfacher, lesbarer JavaScript-Code (nicht minifiziert). Sie rufen die Bibliothek auf; sie enthalten sie nicht.
Dateien und Lizenztexte
Die Bibliothek wird als separate Dateien geliefert, genau so, wie ihre Autoren sie im npm-Paket veröffentlicht haben (wir haben nichts geändert, und die Dateien sind nicht mit anderen Skripten zusammengeführt):
- /vendor/libheif-js/libheif.js (JavaScript-Glue-Code) und /vendor/libheif-js/libheif.wasm (der Decoder)
- /vendor/libheif-js/LICENSE.txt: die vollständigen LGPL-3.0- und GPL-3.0-Texte, wie sie mit libheif geliefert werden
- /vendor/libheif-js/LICENSE-libheif-js-wrapper.txt: der LGPL-3.0-Text, der mit dem libheif-js-Paket geliefert wird
- /vendor/libheif-js/EMSCRIPTEN-NOTICE.txt: MIT- / NCSA- / musl-Lizenztexte für die Emscripten-Laufzeitkomponenten
- /vendor/libheif-js/SOURCE.txt: Versionen, Prüfsummen, Quellcode-Links, Build- und Ersetzungsanweisungen (die gleichen Informationen wie unten)
SHA-256 der beiden Binärdateien:
- libheif.js:
f148d9ff173e5a6d6781e80dccb8336f54bfbb032392ceb2d37e0e92923c4bf3 - libheif.wasm:
e4aa8333fbe55ec7c6c776f735236f40bed9103188498f8131d4e52b73cdfee8
Quellcode, hier gehostet
Der vollständige, zugehörige Quelltext wird auf dieser Website vorgehalten, sodass Sie nicht von GitHub abhängig sind. GitHub schließt keine Submodule in seine Archive ein, weshalb libheif und libde265 separate Dateien sind. Jede der folgenden Dateien ist das Archiv, wie GitHub es für den angezeigten Tag oder Commit bereitstellt.
- libheif-js-1.23.2.tar.gz: der Wrapper und die Paketierung, Tag
1.23.2(Commit6ca00b818c0ff51cb2a5c75b9ce97d708083335a).
SHA-256a52f4570a2c479db9875fd3d082748e41ed69057c77b81bc8bac7a689feab259 - libheif-emscripten-v1.23.2.tar.gz: das Build-Rezept, Tag
v1.23.2(Commitdd5a19b878149437a5a427f6e1afa8bac624a714).
SHA-2561b1b71e8b34ccc2b9ba490d769172ad855c279efdc787d8ea7a901af177ebcab - libheif-ac1cb05c39008f01525c991ff8b88f84ddf70fd2.tar.gz: libheif 1.23.2, das Submodul, auf das libheif-emscripten verweist, Commit
ac1cb05c39008f01525c991ff8b88f84ddf70fd2.
SHA-25636c9b259386f1ffb3ed12d7ca01664fde8ef03802ded750de17db53303b099e7 - libde265-1.0.15-release.tar.gz: die libde265-1.0.15-Release-Datei, die das Build-Skript von libheif herunterlädt (sie enthält das generierte
configureSkript).
SHA-25600251986c29d34d3af7117ed05874950c875dd9292d016be29d3b3762666511d - libde265-v1.0.15.tar.gz: dieselbe Version als normales Repository-Archiv, Tag
v1.0.15(Commit17bb8d9fcea62db8cdeb0fc7ef8d15dbd19a22e4).
SHA-256d4e55706dfc5b2c5c9702940b675ce2d3e7511025c6894eaddcdbaf0b15fd3f3
Dieselben Quellen auf GitHub: libheif-js (Tag 1.23.2), libheif-emscripten (Tag v1.23.2), libheif (Commit ac1cb05) und libde265 (Tag v1.0.15). Das Paket befindet sich ebenfalls auf npm (sha1 185691289ccfefe813e4b7f84ac4f84f24abb064). Wir haben keinerlei Änderungen daran vorgenommen.
Selbst erstellen
Diese Schritte stammen aus dem Build-Workflow von libheif-emscripten v1.23.2 (.github/workflows/emscripten.yml, das Ziel „wasm“). Wir haben sie aus dem Repository kopiert und nicht selbst ausgeführt. Sie benötigen einen sauberen Ubuntu-22.04-Computer (das Installationsskript führt sudo apt-get aus und installiert sowie entfernt Pakete), Node.js 24, git, curl, cmake, make und eine C++-Toolchain.
git clone https://github.com/catdad-experiments/libheif-emscripten
cd libheif-emscripten
git checkout v1.23.2
git submodule update --init --recursive # libheif at ac1cb05c39008f01525c991ff8b88f84ddf70fd2
npm install -g typescript@5
export EMSCRIPTEN_VERSION=3.1.61
cd libheif
./scripts/install-ci-linux.sh # installs Emscripten 3.1.61
./scripts/prepare-ci.sh
sed -e 's/USE_WASM=0/USE_WASM=1 USE_UNSAFE_EVAL=0/g' -e 's/USE_TYPESCRIPT=0/USE_TYPESCRIPT=1/g' \
./scripts/run-ci.sh > ./scripts/run-ci-wasm.sh
chmod +x ./scripts/run-ci-wasm.sh
./scripts/run-ci-wasm.sh # also downloads and builds libde265 1.0.15
cd ..
./dist-prep.sh wasm # result: dist/libheif.js, dist/libheif.wasm
Das libheif-js-Paket lässt anschließend die .js Datei über esbuild laufen (minimiert, Ziel es2019) mit seinem scripts/install.js; deshalb ist unser libheif.js minimiert. SOURCE.txt erklärt diesen Schritt ebenfalls. Ein erneuter Build ist nicht garantiert zu 100 % bitgenau identisch mit den von uns ausgelieferten Dateien.
Ersetzen Sie die Bibliothek durch Ihre eigene Version
Der Konverter lädt libheif.js und libheif.wasm als zwei separate Dateien von /vendor/libheif-js/über /heic-worker.js. Um Ihren eigenen Build zu verwenden, ersetzen Sie die beide Dateien und behalten Sie dabei dieselben Namen und Ordner bei. Ihr Build muss die Schnittstelle bereitstellen, die /heic-worker.js verwendet:
- eine globale Funktion
libheif(options)(Emscripten MODULARIZE, Namelibheif), die Folgendes akzeptiertlocateFile,onRuntimeInitializedundonAbortund gibt das Modul zurück;libheif.jsfindetlibheif.wasmdurchlocateFile new module.HeifDecoder()seinedecode(bytes)(gibt eine Liste von Bildern zurück) und dessendecoderEigenschaft- pro Bild:
is_primary(),get_width(),get_height(),has_alpha_channel(),display({data, width, height}, callback)undfree() module.heif_context_free(handle)
Praktisch: Speichern Sie die Seite und diese Dateien, legen Sie Ihren Build an denselben Ort und bedienen Sie diesen Ordner selbst (zum Beispiel mit python3 -m http.server), oder verwenden Sie die lokale Überschreibungsfunktion Ihres Browsers, um Ihre eigene Datei unter derselben Adresse bereitzustellen.
Ihre Rechte
Sie dürfen die Bibliothek für Ihren eigenen Gebrauch ändern und sie zur Fehlersuche bei diesen Änderungen zurückentwickeln. Nichts auf dieser Seite oder in ihren Bedingungen schränkt dies ein.
Früherer Dekoder
Bis zum 26. September 2026 verwendete diese Seite die Bibliothek heic2any (Version 0.0.4, MIT-Lizenz) für HEIC-Dateien. Sie wird nicht mehr verwendet und die obige Lizenz betrifft sie nicht: Der von uns jetzt gelieferte Dekoder ist der LGPL-3.0 libheif-js, der auf dieser Seite beschrieben wird. Wir haben heic2any ersetzt, da es den Kontrast und die Farben vieler Telefonfotos veränderte und einige neuere HEIC-Dateien nicht lesen konnte.
Fragen
Nutzen Sie den Feedback-Button auf jeder Seite oder erreichen Sie uns über Kontaktseite.