Magick++无法从博客加载

Magick++ not loading from blog

本文关键字:加载 Magick++      更新时间:2023-10-16

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

此代码:

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

工作没有问题。

但是,一旦我做了一个斑点,我就会得到一个异常:

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

引发的异常是:

终止时出现 Magick::ErrorMissing Delegate 类型的未捕获异常此图像格式 '' @ error/blob.c/BlobToImage/350 没有解码委托

我已经验证了 blob 与文件的大小相同。所以我确信它正在读入记忆。

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

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