Для Windows и C ++ самый простой способ - Gdiplus .Вот некоторый псевдокод.
Gdiplus::Bitmap* pBmp = new Gdiplus::Bitmap(width, height, pixelformat);
pBmp->SetPalette(...); // initialize palette for 8bpp formats and less
pBmp->LockBits(...); // acquire the bitmap buffer
// copy your binary image data into the buffer
pBmp->UnlockBits(...); // return the buffer
pBmp->Save(filename, &clsidBMP, NULL);
delete pBmp;
Вы можете получить список форматов пикселей, определенных GDI, плюс здесь .
Большая часть того, что вам нужно, определяется Bitmap класс, который наследуется от класса Image, который определяет метод Save .
Код clsid, требуемый методом save, немного сложнее получить,Но см. Мою публикацию здесь о том, как получить это значение.