Skip to content

0.12.0

Choose a tag to compare

@martinbenes1996 martinbenes1996 released this 23 Feb 09:18

What is new?

(compared to 0.11.0)

  • Added J:a:b sampling factor notation.
im = jpeglib.from_spatial(x)
im.samp_factor = "4:4:4"
im.write_spatial("output.jpeg")
  • Added deep copy for compatibility with numpy array. It makes it easier to use the object in steganography.
cover = jpeglib.read_dct(‘cover.jpeg’)
stego = cover.copy()  # deep copy of cover
stego.Y[0,0,0,1] += 1
stego.write_dct(‘stego.jpeg’)
  • added libjpeg-turbo versions 1.2.0 - 2.0.0 and mozjpeg 1.0.1, 2.0.1 and 3.0.0
  • building on Windows

(compared to 0.11.1+)

  • Features jpeglib.ops and jpeglib.Timer removed, did not fit into the package, moved to imageops
  • solved the version problems in requirements. numba removed from package requirements

Improvements

  • Changed order of coefficients inside block to match other implementations (Matlab, jpegio). Now, it is [num_vertical_blocks, num_horizontal_blocks, vertical_block_size, horizontal_block_size]
  • All errors raised in libjpeg are now caught and passed as a C++/Python exception (#3 ).
  • Better unittest coverage. Unit tests are executed both on Linux and on Windows.
  • pathlib.Path is now accepted as input path
  • Preparation for operations over Huffman table. Not yet fully functional in the release.

Bugfixes

  • Fixed writing DCT coefficients with different than 4:2:2 chroma subsampling
  • Fixed dynamic library binding for Windows (#5 ).
  • limit for marker segments raised
  • full inference of colorspaces and sampling factors in from_dct
  • various other fixes