Vix - Nif bindings for vips

Updating progress after a long time. With the new release, Vix is at v0.10.0 now. It has few significant additions, which I think worth sharing.

v0.10.0

  • Experimental support for streaming. User can read or write images without keeping the complete image in memory. See Vix.Vips.Image.new_from_enum/1 and Vix.Vips.Image.write_to_stream/2
  • Efficient interoperability (zero-copy) with other libraries such as Nx, eVision. See Vix.Vips.Image.new_from_binary/5 and Vix.Vips.Image.write_to_tensor/1

See release changelog for more details.

Other changes include support for foreign operations, copying as formatted binary, updating image metadata etc. With this, almost all major libvips functionality can be accessed in Elixir (If you think something is missing, please let me know).

I like to thank @kip for his recent contributions to Vix and encouragement :slight_smile:


Should I use Vix or Image?

Vix tries to be close to libvips interface to support a large set of use cases. Because of this, doing some basic image operation might feel unintuitive. Image by @kip is an excellent library, which builds on top of Vix and provides more elixir friendly wrapper functions for common operations along with many additional features such handling Exif, Math operators, and more. And all of this is accompanied by good documentation. So for most of the users, using Vix via Image might be better choice.

11 Likes