Skip to content

Tracker for compression support in geotiffjs / Utifjs or sharp/jimp #38

@jo-chemla

Description

@jo-chemla

Track progress for compression support in geotiffjs / UTIFjs

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 snippet from 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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions