-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
Track progress for compression support in geotiffjs / UTIFjs
- Supporting compression for
writeArrayBuffer
(JPG, LZW, Deflate etc) geotiffjs/geotiff.js#472 - encodeImage no support for compression photopea/UTIF.js#121
Or implement alternative, eventually try (sometimes hard to install on client-side):
- SHARP supports compression
compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k
- JIMP not sure it supports tiff export well
- Also useful: see Compression support added to TiTiler as a middleware, not default, via starlette_cramjam. Looks for requiest
headers = {"Accept-Encoding": "br, gzip, zstd"}
and code snippetfrom starlette_cramjam.middleware import CompressionMiddleware app.add_middleware(CompressionMiddleware, ...)
Background:
- l'API browser toBlob (qu'utilise html-to-image) ne supporte pas de mimetype image/tiff, seulement png, jpeg, webp cf toBlob on MDN
- geotiffjs writeArrayBuffer: geotiffjs a son writer qui est basé sur utif.js c'est du coup probable que mes doutes sur la lenteur des ArrayBuffer dans geotiffjs ne soient pas résolus par l'utilisation directe de utifjs.
- utifjs qui est le seul à pouvoir encode du tiff à partir de blobs, on peut plutôt partir sur le paquet npm utif2 d'après la discussion Please update NPM photopea/UTIF.js#106. Du coup pas besoin d'exiftool côté browser a priori, étant donné que utif peut à l'encodage passer des metadata qui ressemble à des tags exifs classiques, dont nos ModelTiepoint et ModelPixelScale
Chosen implementation:
- html-to-image toPixelData pour récupérer un array flattened, Get the raw pixel data as a Uint8Array with every 4 array elements representing the RGBA data of a pixel
- et du coup le writer geotiffjs avec metadata.height et width correctement renseignées, en passant l'array flattened, see example