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 构造函数中使用它。
我正在使用 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 构造函数中使用它。