简体   繁体   中英

Magick++ not loading from blog

I am using Magick++ to load some images. Because I want to wrap PhysFS for all of my image loads, I needed to load an image by blob instead of file path.

This code:

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

Works without issue.

However once I do a blob I get an exception:

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

Exception thrown is:

terminating with uncaught exception of type Magick::ErrorMissingDelegate no decode delegate for this image format `' @ error/blob.c/BlobToImage/350

I have verified the blob is the same size as the file. So I am sure it is reading it into memory.

I tried using the standard library ifstream as well setting std::ios::binary but the problem remains.

Magick::Blob as a constructor needs a void*, in other words a memory location to read the data from. But you are providing pointer to a std::filebuf object and that won't work. You will have to read the file into memory. For example a char* and use that in the Blob constructor.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM