如何从ImageMagick图像获取C缓冲区

6
我正在使用ImageMagick的iPhone端口。我想循环遍历动画gif的帧,并将每个帧转换为UIImage。我知道我可以使用NSData初始化UIImage,而我可以使用const void *初始化NSData。那么我该如何获取图像的缓冲区和长度?
以下是代码:
    MagickReadImage(wand, filename);

        while(MagickHasNextImage(wand)) {
             Image *myImage = GetImageFromMagickWand(wand);
             //HELP ME PLEASE
             const void *myBuff =myImage->blob;  //guessing this is the right way to get the buffer?
             int myLength = ????? //no idea how to get the length
             NSData *myData = [[NSData alloc] initWithBytes:myBuff length:myLength];
             UIImage myImage = [[UIImage alloc] initWithData:myData]];
             MagickNextImage(wand);
    }
1个回答

4
我现在有解决方案了:
    size_t my_size;
    unsigned char * my_image = MagickGetImageBlob(wand, &my_size);
    NSData * data = [[NSData alloc] initWithBytes:my_image length:my_size];
    free(my_image);

    UIImage * image = [[UIImage alloc] initWithData:data];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接