# Browser codec notices and replacement sources

Image Batch loads these codecs locally, without sending image data to a conversion service.

## HEIC / HEIF

heic-to 1.6.6 by Hopper Gee is licensed under LGPL-3.0 (see heic-to-LICENSE.txt). It contains libheif 1.23.6 and libde265 1.0.16, with their licensing included in the source archives below. The application uses the unmodified CSP codec library, loaded separately from the application code.

- Original package, including source, Emscripten decoder source, and esbuild script: heic-to-1.6.6.tgz
- libheif source: libheif-1.23.6-source.tar.gz
- libde265 source: libde265-1.0.16-source.tar.gz
- Upstream: https://github.com/hoppergee/heic-to
- Upstream: https://github.com/strukturag/libheif
- Upstream: https://github.com/strukturag/libde265

To rebuild a replacement codec, follow the heic-to README: build libheif with LIBDE265_VERSION=1.0.16, USE_UNSAFE_EVAL=0, USE_WASM=0 using Emscripten; use the resulting libheif JavaScript as src/lib/libheif-without-unsafe-eval.js; run the package esbuild.mjs script with its declared build dependency. To use a modified library in this application, replace the heic-to dependency with your local package, preserve the heic-to/csp export, run npm install and npm run build. The consuming import is src/lib/image/import.ts. No application contract prohibits modification or reverse engineering needed to debug a modified LGPL library.

## PNG

UPNG.js 2.1.0 by Photopea (Ivan Kutskir) is MIT-licensed (upng-LICENSE.txt), with pako compression code under its included licenses (pako-LICENSE.txt). Image Batch uses the pinned compression stage and assembles PNG chunks in its own png-codec.ts to prevent output-buffer truncation on small and high-entropy images. It does not modify the distributed UPNG package.

- https://github.com/photopea/UPNG.js
- https://github.com/nodeca/pako

These library licenses apply to their respective components and take precedence over general website terms for those components.
