You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expanded TIFF decoding with unsigned 6-, 10-, 12-, and 14-bit grayscale, 2-, 4-, 10-, 12-,
and 14-bit chunky or planar RGB, native packed horizontal prediction, direct 16-bit output,
and five-sample CMYK plus associated or unassociated alpha while retaining bounded segment
memory.
Added explicit WebP-in-TIFF composition through createTiffCodec({ embeddedCodecs: [webpCodec] }); the default TIFF codec and root package do
not import or activate WebP automatically.
Added a complete development-only TIFF dependency matrix plus isolated raw full-image and region
benchmark operations with source-read, maximum decoded-block, external-memory, and ArrayBuffer
measurements.
Added a generated evidence-backed TIFF library comparison across the README and documentation,
backed by pinned versions and a 154-file isolated-process conformance run that reports exact
pixels, mismatches, unsupported cases, errors, timeouts, crashes, native scientific rasters, and
malformed-input behavior separately.
Expanded the browser demo from 8 to 38 public examples spanning ECCI scanning electron
microscopy, OME-TIFF microscopy dimensions, FLIM, SPIM, high-content screening, pathology,
scientific JPEG 2000, high-bit-depth AVIF, and additional unusual codec layouts.
Added a published llms.txt with a capability-manifest-generated codec map, complete quick API
reference, runtime and safety boundaries, and migration guidance for Jimp, Sharp, image-js,
jSquash, GeoTIFF.js, and UTIF.js; every website footer now links the guide and sitemap.
Added TIFF signed 8-/16-bit and IEEE float16/float32/float64 grayscale and RGB decoding with
native-precision raw pixel blocks, deterministic display ranges, bounded Predictor 2 and
floating Predictor 3 reversal, and browser-compatible display conversion.
Added unsigned 24-/32-/64-bit TIFF grayscale and RGB decoding with canonical gray32, rgb32, gray64, and rgb64 raw blocks, exact values above JavaScript's safe-integer range,
bounded wide Predictor 2 reversal, and deterministic display conversion without an 8-/16-bit
raw intermediate or per-pixel BigInt arithmetic.
Added bounded TIFF SGILog and SGILog24 decompression with native CIE Y/XYZ float32 pixel
blocks, logarithmic luminance and chroma reconstruction, deterministic CCIR 709 gamma-2
display conversion, exact segment validation, and browser-compatible strip and tile decoding.
Added explicit TIFF top-level frame and reduced-resolution SubIFD selection for Classic TIFF
and BigTIFF, with selected-level metadata, bounded IFD graph traversal, cycle rejection,
alias-safe shared-directory reuse, global directory limits, and no reads from unselected pixel
segments.
Added 16-bit TIFF palette decode with exact full-range ColorMap scaling, plus signed 8-/16-bit
and float16/float32/float64 CMYK display conversion using declared sample ranges or deterministic
full-type defaults, bounded segment output, and independent pixel validation.
Added 8-bit TIFF CIELab conversion from D65-referenced Lab* to sRGB, bounded CMYK lut16 A2B0 ICC-profile conversion with profile precedence over numeric display, and FillOrder=2 normalization for non-fax strips and tiles before predictor reversal without
mutating aliased source buffers.
Added a public TIFF document layer at purejsimage/tiff with stable top-level/SubIFD graphs,
absolute IFD offsets and lookup, bounded defensive-copy private metadata reads, cached immutable
typed tags with per-call limits, per-directory display and native raster decoders, deterministic
third-party profile registration with isolated detector failures and ambiguity rejection, and
typed explicit TiffProfile<T> opening.
Added native-precision planar or interleaved N-channel RasterBlock output plus explicit rasterToPixels() range mapping, so scientific samples no longer require an implicit RGB
interpretation.
Added purejsimage/scientific OME-TIFF datasets with validated Z/C/T dimensions, channel and
physical-pixel metadata, explicit or implicit TiffData plane mappings, separate-channel
assembly, and reduced-resolution SubIFD selection.
Added a generic WholeSlideImage contract and first-party Aperio SVS profile with bounded
pyramid/associated-image region reads, MPP and objective metadata, reusable JPEG 2000 codestream
composition, and TIFF compression tags 33003/33005. The pinned irreversible Aperio tile is
independently validated against OpenSlide within two 8-bit code values.
Added a separately compiled Leica SCN single-area profile example that imports only published
package entries, with an automated boundary check suitable for independent vendor packages.
Added a dedicated TIFF documentation page covering the complete decode matrix, scientific and
whole-slide APIs, third-party profiles, canonical output, memory model, and unsupported
boundaries; reduced the README TIFF and Zstandard sections to direct documentation links and
refreshed the measured bundle and installed-size tables.
Added a reusable first-party Zstandard decompressor at purejsimage/compression/zstd with
explicit output and window bounds, raw/RLE/compressed blocks, Huffman and FSE entropy decoding,
repeated tables and offsets, frame checksums, and structured malformed-input failures.
Added bounded TIFF Compression=50000 strip and tile decoding through the reusable Zstandard
backend, preserving existing predictor, sample, and pixel processing.
Replaced simple uncompressed TIFF output with a canonical Classic little-endian 8-bit RGB/RGBA
encoder using independently Deflate-compressed, horizontally predicted strips, automatic
roughly 128 KiB strip planning, strict extensible strategy options, bounded raw strip scratch,
compatible RGB ICC preservation, and exact ImageMagick/LibTIFF interoperability validation.
Added bounded first-party TIFF LERC2 and LERC-plus-Deflate segment decoding with mask handling,
native numeric sample reconstruction, independently validated byte/float pixels, and structured
rejection of corrupt headers, dimensions, masks, checksums, and codec metadata.
Added first-party GeoTIFF model, coordinate, bounding-box, GeoKey, GDAL metadata, and nodata
helpers over the public TIFF document API, with exact affine and tiepoint semantics.
Added a bounded HttpRangeSource with request coalescing, validator-protected reads, byte-capped
LRU caching, response cancellation, and selective COG-style region access that does not fetch
unrelated tiles.
Expanded structured TIFF output with explicit rows per strip, tiled RGB/RGBA segments, automatic
or explicit BigTIFF selection, multi-page top-level IFD chains, and reduced-resolution SubIFD
pyramids, independently reopened through GeoTIFF.js.
Added a development-only TIFF conformance harness that scores PureJsImage, GeoTIFF.js, UTIF.js,
image-js, and Jimp against independent sharp/ImageMagick RGBA output with isolated memory,
timeout, crash, exact-pixel, and error reporting.
Changed
Moved OME-TIFF and raster helpers, Aperio SVS, and GeoTIFF profiles out of the root and browser
entries into purejsimage/scientific, purejsimage/pathology, and purejsimage/tiff; moved HttpRangeSource into purejsimage/sources/http-range so the core bundle does not retain
specialized TIFF workflows or the optional HTTP adapter.
Relabeled TIFF conformance as an unreleased commit-pinned workspace snapshot and made decoded
coverage the compact comparison headline, with exact pixels and failure counts reported
separately.