Если массив содержит растровый файл, вы можете просто сохранить байты в виде файла:
File.WriteAllBytes(fileName, imageData);
Если массив содержит только необработанные данные пикселей, вы можете создать растровый объект, используя данные:
unsafe {
fixed (byte* ptr = imageData) {
using (Bitmap image = new Bitmap(width, height, stride, PixelFormat.Format24bppRgb, new IntPtr(ptr))) {
image.Save(fileName);
}
}
}
Значение stride
- это количество байтов между строками сканирования. Если между строками сканирования нет отступов, для формата 24bpp это width * 3
.
Этот метод использует данные в массиве, не создавая еще одну копию всего изображения в памяти (поэтому ему необходимо значение шага).
Если растровые данные хранятся в массиве в обратном порядке, значение stride
должно быть отрицательным, а указатель должен быть началом последней строки сканирования в памяти (ptr + stride * (height - 1)
).