Magick++ 未从博客加载

Magick++ not loading from blog

我正在使用 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,但问题仍然存在。

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