Skip to content

Releases: mrjoshuak/go-openexr

v1.2.1

28 Feb 15:16

Choose a tag to compare

Fixed

  • Removed local replace directive from go.mod that broke CI builds
  • Fixed gofmt alignment in compression/huffman.go

v1.2.0

28 Feb 14:46

Choose a tag to compare

Added

  • HTJ2K compression/decompression of FLOAT (32-bit) channels
  • Progressive HTJ2K decode API and float image output
  • Channel-aware PIZ compress/decompress matching C++ OpenEXR layout
  • Strided 2D Haar wavelet for PIZ float/uint channel support
  • Float32 PIZ roundtrip and C++ interop tests

Fixed

  • Huffman canonical code assignment to match OpenEXR C++ algorithm
  • All go vet findings (unsafe.Pointer arithmetic, WriteByte signature, ARM64 frame size)
  • All staticcheck findings (sync.Pool pointer wrapping, unused types, constant types)

Changed

  • Updated go-jpeg2000 dependency to v1.2.1

v1.0.7

16 Feb 08:00

Choose a tag to compare

Bug Fix

  • Fix scanline decoder crash on non-zero origin data windows — The scanline decoder (both sequential and parallel paths) and encoder were passing absolute data window coordinates to framebuffer WriteRow/ReadRow functions, causing out-of-bounds memory access when the data window origin was non-zero (e.g., dataWindow starting at (654, 245)). Now correctly maps to buffer-relative coordinates. Verified against OpenEXR multipart stereo test images (10-part beachball sequence). (Fixes #2)

v1.0.6

16 Feb 07:35

Choose a tag to compare

Bug Fix

  • Fix ReadChunk EOF on multipart EXR files — All chunk-reading methods (ReadChunk, ReadTileChunk, ReadDeepChunk, ReadDeepTileChunk, and the optimized readChunkReuse) now correctly handle the 4-byte part number prefix in multipart EXR chunk headers. Previously, reading chunks from multipart files would misparse the header and fail with EOF. (Fixes #1)

Tests

  • Added TestMultiPartReadChunkRoundtrip regression test that writes and reads back a multipart file, verifying data integrity per part.

v1.0.5

14 Jan 00:55

Choose a tag to compare

Fix LICENSE file to match official Apache 2.0 template for proper detection by pkg.go.dev.

v1.0.2

12 Jan 05:55

Choose a tag to compare

Changed

  • Improved test coverage to 90%+ across all packages
  • Added comprehensive tests for HTJ2K compression
  • Added tests for error paths and edge cases

Coverage Summary

Package Coverage
half 96.7%
compression 90.6%
exr 90.0%
exrmeta 97.3%
exrutil 91.0%
exrid 91.2%

v1.0.1

12 Jan 03:54

Choose a tag to compare

Fixed

  • Corrected author name in NOTICE file

v1.0.0

12 Jan 03:16

Choose a tag to compare

go-openexr v1.0.0

A pure Go implementation of the OpenEXR high dynamic range image file format.

Features

  • Full Format Support: Scanline, tiled, mipmap/ripmap, deep data, and multipart files
  • All Compression Codecs: None, RLE, ZIP, ZIPS, PIZ, PXR24, B44, B44A, DWAA, DWAB
  • High Performance: SIMD-optimized (ARM64 NEON, AMD64 SSE2) for critical paths
  • Complete Metadata: All standard attributes plus Cryptomatte ID generation
  • Zero CGO: Pure Go with no external dependencies for core functionality

Installation

go get github.com/mrjoshuak/go-openexr

Documentation

See the README for usage examples and API documentation.