Magick++ не загружается из блога

Я использую 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 no делегат декодирования для этого формата изображения `' @ error/blob.c/BlobToImage/350

Я убедился, что размер блоба совпадает с размером файла. Так что я уверен, что он читает это в память.

Я попытался использовать стандартную библиотеку ifstream, также установив std:: ios:: binary, но проблема остается.

1 ответ

Решение

Magick::Blob как конструктор нуждается в void*, другими словами, в ячейке памяти для чтения данных. Но вы предоставляете указатель на объект std:: filebuf, и это не сработает. Вам нужно будет прочитать файл в память. Например, char* и использовать его в конструкторе Blob.

Другие вопросы по тегам