2
我有一個蒙太奇,當指定目標路徑時我可以將它保存到磁盤。但是,當我嘗試將它保存到Blob時,它會失敗。使用Magick將蒙太奇保存爲Blob ++
我是否缺少一些設置?
版本:ImageMagick的6.8.2-5 2013年2月5日Q8
機:Windows 7的64位
編輯:異常:
Unhandled Exception: System.Runtime.InteropServices.SEHException: External component has thrown an exception.
at Magick.throwException(_ExceptionInfo*)
at Magick.writeImages<class std::_List_iterator<class std::_List_val<class Magick::Image,class std::allocator<class Magick::Image> > > >
(_List_iterator<std::_List_val<Magick::Image\,std::allocator<Magick::Image> > > first_, _List_iterator<std::_List_val<Magick::Image\,std::allocator<Magick::Image
> > > last_, Blob* blob_, Boolean adjoin_) in d:\dev\projects\ecs\layers\tools\imagemagicknet\include8\magick++\stl.h:line 2562
代碼:
void test()
{
list<Magick::Image> sourceImageList;
Magick::Image image;
image.read("d:\\imtest\\Montage\\1.jpg");
sourceImageList.push_back(image);
image.read("d:\\imtest\\Montage\\2.jpg");
sourceImageList.push_back(image);
image.read("d:\\imtest\\Montage\\3.jpg");
sourceImageList.push_back(image);
Magick::Color color("rgba(0,0,0,0)");
Montage montageSettings;
montageSettings.geometry("100x100-0-0");
montageSettings.shadow(true);
montageSettings.backgroundColor(color);
montageSettings.tile("3x1");
list<Magick::Image> montagelist;
Magick::montageImages(&montagelist, sourceImageList.begin(), sourceImageList.end(), montageSettings);
// This will give the expected result
Magick::writeImages(montagelist.begin(), montagelist.end(), "d:\\imtest\\Montage\\out.png");
Magick::Blob *b = new Magick::Blob();
// This will throw an exception mentioned above
Magick::writeImages(montagelist.begin(), montagelist.end(), b);
Magick::Image imageFromBlob(*b);
imageFromBlob.write("d:\\imtest\\Montage\\outBlob.png");
}
'blob * b'未初始化幷包含隨機數據。你能指望什麼? – 2013-02-12 08:41:00
@ MahmoudAl-Qudsi謝謝!對不起,我複製了錯誤的行。見編輯。 – jani 2013-02-12 08:51:39