Вот более простое решение. Вы можете использовать GetPixelAddress (...) вместо всего этого BITMAPHEADERINFO и SedDIBitsToDevice. Другая проблема, которую я решил, была с 8-битными изображениями, для которых необходимо определить таблицу цветов.

ужно создатьCImage из байтового массива (на самом деле, это массивunsigned char, но я могу привести к любой форме необходимо). Массив байтов имеет вид «RGBRGBRGB ...». Новое изображение должно содержатькопия байтов изображения, а не использование памяти самого байтового массива.

Я испробовал много разных способов достижения этой цели - в том числе, используя различные функции создания HBITMAP, пытаясь использовать BitBlt - и пока ничего не получалось.

Чтобы проверить, работает ли функция, она должна пройти этот тест:

BYTE* imgBits;
int width;
int height;
int Bpp;   // BYTES per pixel (e.g. 3)
getImage(&imgBits, &width, &height, &Bpp); // get the image bits

// This is the magic function I need!!!
CImage img = createCImage(imgBits, width, height, Bpp);

// Test the image
BYTE* data = img.GetBits();  // data should now have the same data as imgBits

Все реализацииcreateCImage() до сих пор закончили сdata указывая на пустой (заполненный нулями) массив.

Ответы на вопрос(4)

Ваш ответ на вопрос