我正在使用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::二进制,但问题仍然存在。
发布于 2015-06-19 12:54:19
Magick::Blob作为构造函数需要一个空*,换句话说,是一个从内存中读取数据的位置。但是您提供了指向std::filebuf对象的指针,这是行不通的。您必须将该文件读入内存。例如,char*并在Blob构造函数中使用它。
https://stackoverflow.com/questions/30924163
复制相似问题