Это код, который должен генерировать растровое изображение: пиксели получены из функции GetPixels () Windows, которая использует контекст устройства для получения пикселя. Я убедился, что данные пикселей не всегда имеют одинаковое число.
void Bitmap::writeBitmap(std::string filename, Matrix<COLORREF> pixels, int width, int height) {
Magick::InitializeMagick("");
Color* white = new Color("white");
Image* image = new Image(Geometry(120, 120), *white);
image->type(TrueColorType);
image->modifyImage();
Pixels* view = new Pixels(*image);
size_t columns = 120; size_t rows = 120;
Quantum* pixelsPointer = view->get(0, 0, 120, 120);
for (ssize_t row = 0; row < rows; row++) {
for (ssize_t column = 0; column < columns; column++) {
COLORREF cr = pixels.get(row, column);
std::cout << GetRValue(cr) << "|" << GetGValue(cr) << "|" << GetBValue(cr) << std::endl;
*pixelsPointer++ = GetRValue(pixels.get(row, column));
*pixelsPointer++ = GetGValue(pixels.get(row, column));
*pixelsPointer++ = GetBValue(pixels.get(row, column));
}
}
view->sync();
image->write(filename);
}