如何在 C# 中将 Intptr 转换为 ImageSharp 图像?

How to convert Intptr to ImageSharp Image in C#?

在c#(Windows)中,通过图像的widthheightstride,我们可以将Intptr转换为Bitmap如下:

var bitmap = new Bitmap(width, height, stride, PixelFormat.Format24bppRgb, intptrImage);

但是 System.Drawing.BitmapLinux 上不再可用,我们必须使用 SixLabors.ImageSharp.Image。 如何使用 ImageSharpIntptr 转换为图像?

我找到了这个解决方案:

// copy data to byte array
var size = height * stride;
var managedArray = new byte[size];
Marshal.Copy(intptrImage, managedArray, 0, size);

var image = SixLabors.ImageSharp.Image.LoadPixelData<Bgr24>(managedArray,width, height);

这个解决方案工作正常。