gpt4 book ai didi

c - 使用 Magick Wand API 从图像中获取二进制数据

转载 作者:行者123 更新时间:2023-11-30 14:34:02 25 4
gpt4 key购买 nike

我正在尝试获取二进制数据中的图像,以便可以对它进行 Base64 编码。我正在使用 Magick Wand API 的 MagickGetImageBlob(),但我收到的 Blob 不包含完整信息。

我的代码如下。 optenc 是两个结构体,分别包含用户提供的参数和编码信息。我用来进行 Base64 编码的库是 this

void WriteImg(UserDefinedOptions *options, MyStruct *enc, char *format){

MagickWand *wand;
char *outputPath;
unsigned char *buffer = malloc(sizeof(char)*1000);
size_t length;
int flen;

MagickWandGenesis();

wand = NewMagickWand();

MagickConstituteImage(wand, enc->image->width, enc->image->height,
"RGB", CharPixel, enc->image->pxl);

MagickSetImageResolution(wand, (double) options->dpi, (double) options->dpi);
MagickSetImageUnits(wand, PixelsPerInchResolution);

MagickSetImageFormat(wand, format);

outputPath = (options->outputPath == NULL) ? "-" : options->outputPath;

MagickWriteImage(wand, outputPath); // This works and generates correct image


buffer = MagickGetImageBlob(wand, &length); // Incomplete binary data
/* Encode base64 */
encbuffer = base64(buffer, strlen((const char *)buffer), &flen);
printf("Base64:%s\n", encbuffer);

CleanupMagick(&wand, DmtxFalse);

MagickWandTerminus();

}

我做错了什么?有没有更好的方法使用Magick Wand从图像中获取base64编码的字符串?

最佳答案

base64() 的第二个参数应该是 length,而不是 strlen() 的返回值。

/* Encode base64 */
encbuffer = base64(buffer, length, &flen);

关于c - 使用 Magick Wand API 从图像中获取二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59071770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com