我正在使用 this 线程中的一些代码将 byte[] 数据存储为 System.Drawing.Bitmap,然后将其存储为 Avalonia.Media.Imaging.Bitmap。在我的 avalonia 应用程序的图像控件中使用此 Avalonia 位图仅显示黑色图像。
private System.Drawing.Bitmap? _regularBitmap = new (1920, 1080, PixelFormat.Format16bppRgb565);
public void DecodeAndUpdateBitmap(byte[] imageData)
{
using (MemoryStream ms = new MemoryStream(imageData))
{
_regularBitmap.Save(ms, ImageFormat.Jpeg);
ms.Position = 0;
_tempImage = new Avalonia.Media.Imaging.Bitmap(ms);
}
}
作为方法参数传入的byte[],用于内存流,里面肯定存储有数据,如下图所示。
所以我的猜测是,我创建 System.Drawing.Bitmap 用作 Avalonia.Media.Imaging.Bitmap 的方式导致了这个问题。
有谁知道更好的方法来实现我想要实现的目标,或者知道是什么导致了这个问题?
尝试使用 WriteableBitmap。
var bitmap = new WriteableBitmap(
new PixelSize(1920, 1080),
new Vector(96, 96),
PixelFormat.Bgra8888,
AlphaFormat.Premul);
using (var frameBuffer = bitmap.Lock())
{
Marshal.Copy(imageData, 0, frameBuffer.Address, imageData.Length);
}
_tempImage = bitmap;