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
| Category | Dart Class | Description |
|---|---|---|
| Arithmetic | VipsArithmeticBindings | Math operations (add, subtract, multiply, etc.) |
| Colour | VipsColourBindings | Colour space conversions |
| Conversion | VipsConversionBindings | Format and type conversions |
| Convolution | VipsConvolutionBindings | Blur, sharpen, edge detection |
| Create | VipsCreateBindings | Create images (black, xyz, text, etc.) |
| Draw | VipsDrawBindings | Draw on images |
| Resample | VipsResampleBindings | Resize, thumbnail, affine |
| I/O | VipsIoBindings | Load and save images |
| Morphology | VipsMorphologyBindings | Morphological operations |
| Frequency | VipsFrequencyBindings | FFT operations |
| Relational | VipsRelationalBindings | Comparison operations |
| Complex | VipsComplexBindings | Complex number operations |
| Mosaicing | VipsMosaicingBindings | Image stitching |
Quick Reference Table
Most Common Functions
| libvips C | Dart Pipeline | Description |
|---|---|---|
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
-
NULL Terminators: Variadic functions in C require NULL terminator. In Dart, this is handled automatically by the binding layer.
-
Memory Management: Pipeline API manages memory automatically. Low-level bindings require manual cleanup.
-
Error Handling: C returns error codes. Dart throws
VipsApiException. -
Optional Parameters: C uses variadic args. Dart uses named parameters with defaults.
Official Documentation
For complete C API documentation, see: