Catel.Services.ViewExportService.ConvertWritableBitmapToByteArray C# (CSharp) Метод

ConvertWritableBitmapToByteArray() приватный статический Метод

TODO: Create an extension method
private static ConvertWritableBitmapToByteArray ( System.Windows.Media.Imaging.WriteableBitmap bmp ) : byte[]
bmp System.Windows.Media.Imaging.WriteableBitmap
Результат byte[]
        private static byte[] ConvertWritableBitmapToByteArray(WriteableBitmap bmp)
        {
            var result = new byte[56 + 4 * bmp.PixelWidth * bmp.PixelHeight];

            // bitmap signature
            result[0] = (byte)'B';
            result[1] = (byte)'M';

            // offset
            result[10] = 56;

            // header size
            result[14] = 40;

            // width of the image
            SerializeIntoByteArray(bmp.PixelWidth, result, 18);

            // width of the height
            SerializeIntoByteArray(bmp.PixelHeight, result, 22);

            // planes
            result[26] = 1;

            // bits per pixel
            result[28] = 32;

            // bitmap raw size, 4 bytes per pixel
            var size = bmp.PixelHeight * bmp.PixelHeight * 4;
            SerializeIntoByteArray(size, result, 34);

            int idx = result.Length - 1;
            for (int i = 0; i < bmp.PixelHeight; i++)
            {
                for (int j = 0; j < bmp.PixelWidth; j++)
                {
                    var color = bmp.Pixels[i * bmp.PixelWidth + (bmp.PixelWidth - j - 1)];
                    SerializeIntoByteArray(color, result, idx - 3);
                    idx -= 4;
                }
            }

            return result;
        }
#endif