Magick ++没有从博客加载

时间:2015-06-18 19:30:51

标签: c++ imagemagick physfs

我正在使用Magick ++加载一些图片。因为我想为所有图像加载包装PhysFS,所以我需要通过blob而不是文件路径加载图像。

此代码:

    Magick::Image test("path/to/some.png");

无问题地工作。

然而,一旦我做了一个blob,我得到一个例外:

    PhysFS::ifstream img ("path/to/some.png");
    Magick::Blob blob( img.rdbuf(), img.length() );
    Magick::Image test(blob);

抛出的异常是:

以类型Magick :: ErrorMissingDelegate的未捕获异常终止 没有这种图像格式的解码委托`'@ error / blob.c / BlobToImage / 350

我已经验证blob与文件大小相同。所以我相信它正在将它读入内存。

我尝试使用标准库ifstream以及设置std :: ios :: binary但问题仍然存在。

1 个答案:

答案 0 :(得分:2)

Magick :: Blob作为构造函数需要一个void *,换句话说就是一个从中读取数据的内存位置。但是您提供了指向std :: filebuf对象的指针,但这不起作用。您必须将文件读入内存。例如char *并在Blob构造函数中使用它。