在 imagemagick 中使用 C API 将图像保存在内存中而不是磁盘中?

Save image in memory and not in disk using C API in imagemagik?

我有这个命令行:

 \ImageMagick-7.0.8-Q16\magick.exe -background transparent -fill white -font Amiri-Bold -pointsize 100 -kerning 5.0 -gravity center label:@c:\users\foo\appdata\local\temp\tmpahpcw2.txt -type truecolormatte PNG32:c:\users\foo\appdata\local\temp\tmp1ogyjm.png 

如您所见,它从文件中获取字符串并将其保存到 png 文件中。
我的问题是我可以使用 C API 执行相同的操作吗(我想是的)但重要的问题不是仅在内存中使用磁盘上的文件。
感谢您的帮助

如果要将PNG图像文件保存到内存中,请使用MagickGetImageBlob

size_t length;
unsigned char * address;
address = MagickGetImageBlob(wand, &length);
if (address != (unsigned char *)NULL) {
  printf("Wrote %zu bytes of data to %p address\n", length, address);
}

如果要将像素 data 保存到内存,请使用 MagickExportImagePixels

MagickBooleanType status;
size_t width = MagickGetImageWidth(wand);
size_t height = MagickGetImageHeight(wand);
size_t channels = 3; // "RGB"
size_t data_length = sizeof(unsigned char) * channels * width * height;
unsigned char * data = malloc(data_length);
status = MagickExportImagePixels(wand, 0, 0, width, height, "RGB", CharPixel, data);
if (status == MagickTrue) {
  fprintf(stdout, "Wrote %zu bytes of data to %p address\n", data_length, data);
}