2015-06-18 36 views
0

我使用Magick ++加載一些圖像。因爲我想爲所有圖像加載包裝PhysFS,所以我需要通過blob而不是文件路徑加載圖像。Magick ++無法從博客加載

此代碼:

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但問題依然存在。

回答

2

Magick :: Blob作爲一個構造函數需要一個void *,換句話說就是一個用於讀取數據的內存位置。但是你正在提供一個指向std :: filebuf對象的指針,這是行不通的。您將不得不將該文件讀入內存。例如一個char *並在Blob構造函數中使用它。