我想加载一个像素缓冲区,以便使用ImageMagick进行缩放。 我在调用构造函数时遇到异常,这是我的代码:
BYTE *Duplication::scaleBufferImageMagick(unsigned char *data, int width, int height) {
BYTE *buffer = nullptr;
try {
Magick::Image image(width, height, "BGRA", Magick::StorageType::CharPixel, data);
Magick::Image scaled = image;
scaled.resize("1280x720");
int w = scaled.columns();
int h = scaled.rows();
Magick::Quantum *pixels = scaled.getPixels(0, 0, w, h);
}
catch (Magick::Exception &error) {
TRACE("ERROR -> ", error.what()); //nothing on error.what()
}
return buffer;
}
该例外根本不明确:
Unhandled exception at 0x7687A9F2 in myexe.exe: Microsoft C++ exception: Magick::ErrorOption at memory location 0x08EDEE34.
有人可以告诉我如何做这个过程......因为它应该很简单......
答案 0 :(得分:0)
不应该定义存储类型。如果*data
为unsigned char
,那么您应该使用Magick::StorageType::CharPixel
加载流。
Magick::Image image(1920, 1080, "BGRA", Magick::StorageType::CharPixel, data);