Skip to content

Support JPXDecode Filter (JPEG2000) #41

@gunnsth

Description

@gunnsth

Add support for decoding and encoding with the JPEG2000 standard.

See section 7.4.9 JPXDecode Filter (PDF32000_2008):

The JPXDecode filter decodes data that has been encoded using the JPEG2000 compression
method, an ISO standard for the compression and packaging of image data.
  • JPEG2000 defines a wavelet-based method for image compression that gives somewhat better size reduction than other methods such as regular JPEG or CCITT.
  • Only applied to image XObjects, not inline images
  • Suitable for both images with a single or multiple color components and bits per sample ranging between 1-38, so it is quite flexible.
  • Very flexible in terms of colorspaces etc, see 7.4.9 for more information.
  • See http://www.jpeg.org/jpeg2000/ and ISO/IEC 15444-2, Information Technology, JPEG 2000 Image Coding System: Extensions.

Implementation

  • Makes sense to implement as a package jpeg2000 that can be included internally in unidoc. Should be licensed with the same license as the unidoc project.
  • Start by focusing on decoding, can use the example provided in the PDF reference, and extract some JPXDecode data from PDF files
  • Code should follow the unidoc style guide
  • Encoding should also be implemented in the package such that go/pdf image data can be reencoded with JPEG2000 and embedded in the PDF.
  • Make some benchmarks to set a baseline and fix obvious performance issues

Notes

I am currently not aware of any golang implementations of JPEG2000. However, there are a few open source implementions in other languages that might be a good reference in addition to the standard.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions