Artemis.DeviceProviders.Logitech.Utilities.OrionUtilities.BitmapToByteArray C# (CSharp) Метод

BitmapToByteArray() публичный статический Метод

public static BitmapToByteArray ( Bitmap b, bool remap = true ) : byte[]
b System.Drawing.Bitmap
remap bool
Результат byte[]
        public static byte[] BitmapToByteArray(Bitmap b, bool remap = true)
        {
            if (b.Width > 21 || b.Height > 6)
                b = ResizeImage(b, 21, 6);

            var rect = new Rectangle(0, 0, b.Width, b.Height);
            var bitmapData = b.LockBits(rect, ImageLockMode.ReadWrite, b.PixelFormat);

            var depth = Image.GetPixelFormatSize(b.PixelFormat);
            var step = depth/8;
            var pixels = new byte[21*6*step];
            var iptr = bitmapData.Scan0;

            // Copy data from pointer to array
            Marshal.Copy(iptr, pixels, 0, pixels.Length);

            if (!remap)
                return pixels;

            var remapped = new byte[pixels.Length];

            // Every  key is 4 bytes
            for (var i = 0; i <= pixels.Length/4; i++)
            {
                var firstSByte = Keymappings[i].Source*4;
                var firstTByte = Keymappings[i].Target*4;

                for (var j = 0; j < 4; j++)
                    remapped[firstTByte + j] = pixels[firstSByte + j];
            }

            b.Dispose();
            return remapped;
        }