我有一個包含RLE壓縮的8位RGB TGA圖像數據的緩衝區。我想這個加載到一個Magick ++圖像,但我不斷收到Magick ++ not loading TGA blob
Magick: no decode delegate for this image format `' @ error/blob.c/BlobToImage/353
這裏是我的代碼
#include <Magick++.h>
#include <fstream>
int main(int argc, char** argv)
{
std::ifstream file("window_borders.tga", std::ios::binary | std::ios::ate);
std::streamsize size = file.tellg();
file.seekg(0, std::ios::beg);
char* buffer = new char[size];
if (!file.read(buffer, size)) return 1;
Magick::Blob data_blob(buffer, size);
Magick::Image m_image(data_blob);
return 0;
}
如果我確定我得到它
window_borders.tga TGA 330x390 330x390+0+0 8-bit sRGB 33106B 0.000u 0:00.000
煩人,如果我指定這信息,那麼它工作得很好。我甚至可以把它轉換:
Magick::Image m_image(data_blob, Magick::Geometry("330x390"), "TGA");
m_image.magick("JPEG");
m_image.write("test.jpg");
事實上test.jpg
和window_borders.tga
看起來相同。爲什麼不能自動檢測格式?
除非我們用調試器跟蹤代碼,並明白爲什麼image_blob格式錯誤,否則很難分辨出來。 – AlexanderVX
看到我上面的編輯。我有三重檢查,我正在提供正確的數據到blob構造函數,不知何故blob的有效性會根據其他未知因素而變化。 – Max
現在'Magick :: Image m_image();'缺少'data_blob'參數? – AlexanderVX