将缓冲区原始像素加载到imagemagick

时间:2017-06-19 12:23:04

标签: imagemagick scale image-manipulation pixels

我想加载一个像素缓冲区,以便使用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.

有人可以告诉我如何做这个过程......因为它应该很简单......

1 个答案:

答案 0 :(得分:0)

不应该定义存储类型。如果*dataunsigned char,那么您应该使用Magick::StorageType::CharPixel加载流。

Magick::Image image(1920, 1080, "BGRA", Magick::StorageType::CharPixel, data);