Skip to content

Releases: lopcode/vips-ffm

v1.9.1

31 Aug 14:55
af82060
Compare
Choose a tag to compare

Notable changes

You no longer have to call Vips.init yourself - using anything from Vips, VipsInvoker, or VipsHelper will automatically initialise libvips for you. This aligns vips-ffm with the behaviour of other bindings. You can disable this new default behaviour with a system property. Thanks @jbaiter!

Vips.init(Boolean, Boolean) has been deprecated in favour of Vips.allowUntrustedOperations and Vips.enableLeakDetection.

What's Changed

  • Automatically initialise libvips by default by @lopcode in #177

Full Changelog: v1.9.0...v1.9.1

v1.9.0

19 Aug 19:54
b74fdf1
Compare
Choose a tag to compare

Notable changes

The signature of VCustomSource#SeekCallback has been corrected, to include both offset and whence from the upstream libvips API - thanks @jbaiter!

What's Changed

New Contributors

Full Changelog: v1.8.0...v1.9.0

v1.8.0

19 Jul 18:24
0d498ab
Compare
Choose a tag to compare

Notable changes

  • VImage.newFromMemory and VImage.writeToMemory now both use the FFM MemorySegment API to avoid unnecessary copies to/from a ByteBuffer, and allow operating on multi-gigabyte images
    • Note that you can still use MemorySegment.ofBuffer to continue to use a ByteBuffer as input, or MemorySegment.ofArray to input a Java byte[] array
    • See the Java MemorySegment API for more helper methods to various common Java types
  • The README now includes an Operationalisation section describing how to optimise memory usage, enable and disable fuzzed libvips methods, and optionally use jemalloc

New Contributors 🎉

Commits

Full Changelog: v1.7.1...v1.8.0

v1.7.1

28 Jun 16:25
74e6f9d
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.7.0...v1.7.1

v1.7.0

13 Jun 23:18
df781b7
Compare
Choose a tag to compare

Notable changes

  • Adds support for libvips header operations, including access to things like ICC Profiles, EXIF data, and embedded preview images (see image for sample, libvips docs)
  • Removes long-deprecated getUnsafeAddress and asByteBuffer methods (use getUnsafeStructAddress and asArenaScopedByteBuffer instead)
  • Removes accidentally included "deprecated" libvips operations (specifically removes avifsaveTarget, cache, magicksaveBmp, pbmsaveTarget, pfmsaveTarget, pgmsaveTarget, pnmsaveTarget internal operations)
    • Note that there is no lost functionality here - these methods are internal libvips helper methods for other operations - see discussion
Screenshot 2025-06-14 at 00 09 41

Commits

  • Bump the jackson group with 2 updates by @dependabot in #147
  • Bump org.gradle.toolchains.foojay-resolver-convention from 0.10.0 to 1.0.0 by @dependabot in #151
  • Remove deprecated manual methods, and hide deprecated operations by @lopcode in #155
  • Image metadata getting and setting by @lopcode in #156

Full Changelog: v1.6.0...v1.7.0

v1.6.0

05 Jun 21:21
73f5111
Compare
Choose a tag to compare

Notable changes

  • Builds with libvips 8.17.0, including Markdown comments - this includes numerous fixes to how documentation is displayed, including nicely formatted tables (see image)
  • Builds with Java 23 (required for Markdown comments), whilst setting Java 22 compatibility for the compilation
    • Java 22 compatibility is best-effort, and the documentation has been updated to recommend JDK 23+
Screenshot 2025-06-05 at 21 57 57

Commits

  • Bump jvm from 2.1.10 to 2.1.20 by @dependabot in #143
  • Bump org.apache.commons:commons-text from 1.13.0 to 1.13.1 by @dependabot in #145
  • Bump org.gradle.toolchains.foojay-resolver-convention from 0.9.0 to 0.10.0 by @dependabot in #144
  • Restructure README to make it easier for beginners by @lopcode in #146
  • Markdown comments and libvips 8.17.0 by @lopcode in #150
  • Fix a few rogue old-style comments by @lopcode in #152

Full Changelog: v1.5.2...v1.6.0

v1.5.2

16 Mar 16:49
28abe18
Compare
Choose a tag to compare

No API changes - improved error messages for library load failures when a path is explicitly set

What's Changed

Full Changelog: v1.5.1...v1.5.2

v1.5.1

15 Mar 21:46
af9ce66
Compare
Choose a tag to compare

No public facing API changes - just syncing with libvips 8.16.1.

What's Changed

Full Changelog: v1.5.0...v1.5.1

v1.5.0

25 Jan 23:29
88337e2
Compare
Choose a tag to compare

What's Changed

  • Bump org.apache.commons:commons-text from 1.12.0 to 1.13.0 by @dependabot in #127
  • Expose all vips_image_get functions in VipsHelper by @lopcode in #134

Full Changelog: v1.4.0...v1.5.0

v1.4.0

20 Dec 15:02
69dba6d
Compare
Choose a tag to compare

Breaking change 💥

#129 includes a fix for a strange API interaction that required you to create a new, blank VImage before being able to use certain operations that don't actually reference it. The functions that call these operations are now static, and require an arena to be passed.

For example, VImage.thumbnail is now a static method. This direct thumbnail mechanism is preferred, and offers quality improvements, as noted in the docs for vips_thumbnail_image. An example of usage is available in the samples.

All affected VImage functions are listed here: analyzeload, arrayjoin, bandjoin, bandrank, black, composite, csvload, csvloadSource, eye, fitsload, fitsloadSource, fractsurf, gaussmat, gaussnoise, gifload, gifloadBuffer, gifloadSource, grey, heifload, heifloadBuffer, heifloadSource, identity, jp2kload, jp2kloadBuffer, jp2kloadSource, jpegload, jpegloadBuffer, jpegloadSource, jxlload, jxlloadBuffer, jxlloadSource, logmat, magickload, magickloadBuffer, maskButterworth, maskButterworthBand, maskButterworthRing, maskFractal, maskGaussian, maskGaussianBand, maskGaussianRing, maskIdeal, maskIdealBand, maskIdealRing, matload, matrixload, matrixloadSource, openexrload, openslideload, openslideloadSource, pdfload, pdfloadBuffer, pdfloadSource, perlin, pngload, pngloadBuffer, pngloadSource, ppmload, ppmloadSource, radload, radloadBuffer, radloadSource, rawload, sdf, sines, sum, svgload, svgloadBuffer, svgloadSource, switch1, text, thumbnail, thumbnailBuffer, thumbnailSource, tiffload, tiffloadBuffer, tiffloadSource, tonelut, vipsload, vipsloadSource, webpload, webploadBuffer, webploadSource, worley, xyz, zone.

What's Changed

  • Add docker test suite, include debian 12 to start by @lopcode in #122
  • Signpost libvips-dev on Debian / Ubuntu by @lopcode in #123
  • Bump the jackson group with 2 updates by @dependabot in #124
  • Bump jvm from 2.0.21 to 2.1.0 by @dependabot in #125
  • Bump org.gradle.toolchains.foojay-resolver-convention from 0.8.0 to 0.9.0 by @dependabot in #126
  • Fix having to create blank VImages for operations that should be static by @lopcode in #129

Full Changelog: v1.3.0...v1.4.0