save method

int save(
  1. String path, {
  2. ImWriteFormats? format,
  3. Map<ImWriteFlags, int> params = const {},
})

Implementation

int save(String path, {ImWriteFormats? format, Map<ImWriteFlags, int> params = const {}}) {
  final cPath = path.toNativeUtf8().cast<ffi.Char>();
  final pathExt = path.split('.').last;
  format ??= ImWriteFormats.fromValue(pathExt);

  int rval = -1;
  switch (format) {
    case ImWriteFormats.PNG:
      rval = c.stbi_write_png(cPath, _width, _height, _channels, ptr, 0);
    case ImWriteFormats.JPEG || ImWriteFormats.JPG:
      rval = c.stbi_write_jpg(
        cPath,
        _width,
        _height,
        _channels,
        ptr,
        params[ImWriteFlags.IMWRITE_JPEG_QUALITY] ?? 95,
      );
    case ImWriteFormats.BMP:
      rval = c.stbi_write_bmp(cPath, _width, _height, _channels, ptr);
    case _:
      throw ArgumentError.value(format, 'format', 'Unsupported image format');
  }
  calloc.free(cPath);
  return rval;
}