libvips/libvips logo

libvips/libvips

Free

A fast image processing library with low memory needs.

FreeFree tier
Type
Open Source

About libvips/libvips

libvips is a demand-driven, horizontally threaded image processing library designed for speed and low memory usage. It offers over 300 operations covering arithmetic, histograms, convolution, morphological operations, frequency filtering, colour, resampling, statistics, and more. It supports a wide range of numeric types (8-bit int to 128-bit complex) and images with any number of bands. It handles many image formats including JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, and OpenSlide, with additional support via ImageMagick or GraphicsMagick for formats like DICOM. It provides native bindings for C, C++, and command-line, plus full bindings for Ruby, Python, PHP, C#/.NET, Go, Lua, Crystal, Elixir, Java, and Nim. libvips is used by projects such as Mastodon, sharp (Node.js), imgproxy, wsrv.nl, bimg, Ruby on Rails, CarrierWave, and MediaWiki. Its official GUI is nip4, a combination of a spreadsheet and photo editor.

Key Features

Demand-driven, horizontally threaded processing for speed and low memory use
Over 300 image processing operations across arithmetic, histograms, convolution, morphology, frequency filtering, colour, resampling, statistics, and more
Supports numeric types from 8-bit int to 128-bit complex with any number of bands
Native bindings for C, C++, and command-line; full language bindings for Ruby, Python, PHP, C#/.NET, Go, Lua, Crystal, Elixir, Java, Nim
Supports a wide range of image formats: JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, OpenSlide, and DICOM via ImageMagick/GraphicsMagick
Used by major projects: Mastodon, sharp (Node.js), imgproxy, wsrv.nl, bimg, Ruby on Rails, CarrierWave, MediaWiki
Official GUI nip2 (a spreadsheet-photo editor hybrid)
Open source under LGPL-2.1-or-later

Pros & Cons

Pros
  • Exceptionally fast processing with low memory footprint compared to alternatives
  • Comprehensive set of over 300 image operations
  • Extensive format support, including modern and specialized formats
  • Multi-language bindings make it accessible from many programming environments
  • Demand-driven execution enables efficient pipelined and threaded processing
  • Proven reliability through use in high-traffic production services

Best For

Web image thumbnail generation and resizing (e.g., sharp, imgproxy)Photo editing and transformation in desktop and server applicationsBatch processing and format conversion pipelinesScientific and medical image analysis (supports FITS, Analyze, NIfTI, OpenSlide)Image processing in social media platforms (e.g., Mastodon)Integration in web frameworks (e.g., Ruby on Rails with CarrierWave)Media asset management in content management systems (e.g., MediaWiki)

FAQ

What is libvips?
libvips is a demand-driven, horizontally threaded image processing library known for its speed and low memory usage. It provides over 300 operations and supports a wide range of image formats.
What image formats does libvips support?
libvips supports JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, OpenSlide, and via ImageMagick/GraphicsMagick also DICOM.
What programming languages can use libvips?
libvips provides native bindings for C, C++, and command-line. Full bindings are available for Ruby, Python, PHP, C#/.NET, Go, Lua, Crystal, Elixir, Java, and Nim.
Is libvips free and open source?
Yes, libvips is open source under the LGPL-2.1-or-later license.