Skip to main content

API Reference

This section provides a mapping between libvips C API and libvips_ffi Dart bindings.

Third-Party Binding

This is a third-party language binding. Not all libvips functions are implemented. The function signatures may differ from the original C API to provide a more idiomatic Dart experience.

Binding Categories

CategoryDart ClassDescription
ArithmeticVipsArithmeticBindingsMath operations (add, subtract, multiply, etc.)
ColourVipsColourBindingsColour space conversions
ConversionVipsConversionBindingsFormat and type conversions
ConvolutionVipsConvolutionBindingsBlur, sharpen, edge detection
CreateVipsCreateBindingsCreate images (black, xyz, text, etc.)
DrawVipsDrawBindingsDraw on images
ResampleVipsResampleBindingsResize, thumbnail, affine
I/OVipsIoBindingsLoad and save images
MorphologyVipsMorphologyBindingsMorphological operations
FrequencyVipsFrequencyBindingsFFT operations
RelationalVipsRelationalBindingsComparison operations
ComplexVipsComplexBindingsComplex number operations
MosaicingVipsMosaicingBindingsImage stitching

Quick Reference Table

Most Common Functions

libvips CDart PipelineDescription
vips_resize()pipeline.resize()Resize by scale factor
vips_thumbnail_image()pipeline.thumbnail()Smart thumbnail
vips_crop()pipeline.crop()Extract region
vips_smartcrop()pipeline.smartCrop()Auto-crop to interesting area
vips_rotate()pipeline.rotate()Rotate by angle
vips_flip()pipeline.flipHorizontal() / flipVertical()Flip image
vips_gaussblur()pipeline.gaussianBlur()Gaussian blur
vips_sharpen()pipeline.sharpen()Sharpen image
vips_invert()pipeline.invert()Invert colours
vips_colourspace()pipeline.colourspace()Convert colour space
vips_linear1()pipeline.brightness() / contrast()Linear adjustment
vips_jpegsave_buffer()pipeline.toJpeg()Save as JPEG
vips_pngsave_buffer()pipeline.toPng()Save as PNG
vips_webpsave_buffer()pipeline.toWebp()Save as WebP

Usage Pattern

C API (libvips)

VipsImage *in, *out;
in = vips_image_new_from_file("input.jpg", NULL);
vips_resize(in, &out, 0.5, NULL);
vips_image_write_to_file(out, "output.jpg", NULL);
g_object_unref(in);
g_object_unref(out);

Dart API (libvips_ffi)

// High-level Pipeline API (recommended)
final result = VipsPipeline.fromFile('input.jpg')
.resize(scale: 0.5)
.toJpeg();
File('output.jpg').writeAsBytesSync(result);

// Low-level bindings (advanced)
final inPtr = apiBindings.imageNewFromFile(namePtr);
apiBindings.resize(inPtr, outPtr, 0.5);
apiBindings.imageWriteToFile(outPtr.value, outputPtr);

Key Differences from C API

  1. NULL Terminators: Variadic functions in C require NULL terminator. In Dart, this is handled automatically by the binding layer.

  2. Memory Management: Pipeline API manages memory automatically. Low-level bindings require manual cleanup.

  3. Error Handling: C returns error codes. Dart throws VipsApiException.

  4. Optional Parameters: C uses variadic args. Dart uses named parameters with defaults.

Official Documentation

For complete C API documentation, see: