我使用以下内容将BitmapSource
转换为Bitmap
:
internal static Bitmap ConvertBitmapSourceToBitmap(BitmapSource bitmapSrc)
{
int width = bitmapSrc.PixelWidth;
int height = bitmapSrc.PixelHeight;
int stride = width * ((bitmapSrc.Format.BitsPerPixel + 7) / 8);
byte[] bits = new byte[height * stride];
bitmapSrc.CopyPixels(bits, stride, 0);
unsafe
{
fixed (byte* pBits = bits)
{
IntPtr ptr = new IntPtr(pBits);
return new System.Drawing.Bitmap(
width,
height,
stride,
System.Drawing.Imaging.PixelFormat.Format32bppPArgb, //The problem
ptr);
}
}
}
但我不知道如何获得PixelFormat
的{{1}},因此我的图片被破坏了。
对于上下文,我使用这种技术是因为我想加载一个tiff,可能是8或16灰色或24或32位颜色,我需要保留BitmapSource
。我更愿意修复我的PixelFormat
因为它非常方便,但也很乐意用更好的技术替换以下代码,从BitmapSource创建一个Bitmap:
ConvertBitmapSourceToBitmap