byte[] GetAllBytesFromBitmapHeader(IntPtr hBitmap) { var bmi = (BITMAPV5HEADER)Marshal.PtrToStructure(hBitmap, typeof(BITMAPV5HEADER)); var infoHeaderSize = bmi.bV5Size; var imageSize = imageNativeApi.GetImageSizeFromBitmapHeader(bmi); var fileSize = (int)(infoHeaderSize + imageSize); var dibBuffer = new byte[fileSize]; Marshal.Copy(hBitmap, dibBuffer, 0, fileSize); using (var bitmapStream = new MemoryStream()) { bitmapStream.Write(dibBuffer, 0, dibBuffer.Length); bitmapStream.Seek(0, SeekOrigin.Begin); return(bitmapStream.ToArray()); } }
int GetStrideFromBitmapHeader(BITMAPV5HEADER bmi) { var imageSize = imageNativeApi.GetImageSizeFromBitmapHeader(bmi); return((int)(imageSize / bmi.bV5Height)); }