跳到主要内容

API 参考

本节提供 libvips C API 与 libvips_ffi Dart 绑定的映射。

第三方绑定

这是第三方语言绑定。并非所有 libvips 函数都已实现。函数签名可能与原始 C API 不同,以提供更符合 Dart 习惯的体验。

绑定分类​

分类Dart 类描述
算术VipsArithmeticBindings数学运算 (add, subtract, multiply 等)
颜色VipsColourBindings色彩空间转换
转换VipsConversionBindings格式和类型转换
卷积VipsConvolutionBindings模糊、锐化、边缘检测
创建VipsCreateBindings创建图像 (black, xyz, text 等)
绘制VipsDrawBindings在图像上绘制
重采样VipsResampleBindings缩放、缩略图、仿射变换
输入输出VipsIoBindings加载和保存图像
形态学VipsMorphologyBindings形态学操作
频率VipsFrequencyBindingsFFT 操作
关系VipsRelationalBindings比较操作
复数VipsComplexBindings复数操作
拼接VipsMosaicingBindings图像拼接

快速参考表​

最常用函数​

libvips CDart Pipeline描述
vips_resize()pipeline.resize()按比例缩放
vips_thumbnail_image()pipeline.thumbnail()智能缩略图
vips_crop()pipeline.crop()提取区域
vips_smartcrop()pipeline.smartCrop()自动裁剪到有趣区域
vips_rotate()pipeline.rotate()按角度旋转
vips_flip()pipeline.flipHorizontal() / flipVertical()翻转图像
vips_gaussblur()pipeline.gaussianBlur()高斯模糊
vips_sharpen()pipeline.sharpen()锐化图像
vips_invert()pipeline.invert()反转颜色
vips_colourspace()pipeline.colourspace()转换色彩空间
vips_linear1()pipeline.brightness() / contrast()线性调整
vips_jpegsave_buffer()pipeline.toJpeg()保存为 JPEG
vips_pngsave_buffer()pipeline.toPng()保存为 PNG
vips_webpsave_buffer()pipeline.toWebp()保存为 WebP

使用模式​

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)​

// 高级 Pipeline API(推荐)
final result = VipsPipeline.fromFile('input.jpg')
.resize(scale: 0.5)
.toJpeg();
File('output.jpg').writeAsBytesSync(result);

// 底层绑定(高级用法)
final inPtr = apiBindings.imageNewFromFile(namePtr);
apiBindings.resize(inPtr, outPtr, 0.5);
apiBindings.imageWriteToFile(outPtr.value, outputPtr);

与 C API 的主要区别​

  1. NULL 终止符:C 中的可变参数函数需要 NULL 终止符。在 Dart 中,绑定层自动处理。

  2. 内存管理:Pipeline API 自动管理内存。底层绑定需要手动清理。

  3. 错误处理:C 返回错误码。Dart 抛出 VipsApiException。

  4. 可选参数:C 使用可变参数。Dart 使用带默认值的命名参数。

官方文档​

完整的 C API 文档请参见: