如何在 C# 中将 Intptr 转换为 ImageSharp 图像?
How to convert Intptr to ImageSharp Image in C#?
在c#(Windows)中,通过图像的width
、height
和stride
,我们可以将Intptr
转换为Bitmap
如下:
var bitmap = new Bitmap(width, height, stride, PixelFormat.Format24bppRgb, intptrImage);
但是 System.Drawing.Bitmap
在 Linux
上不再可用,我们必须使用 SixLabors.ImageSharp.Image
。
如何使用 ImageSharp
将 Intptr
转换为图像?
我找到了这个解决方案:
// 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);
这个解决方案工作正常。
在c#(Windows)中,通过图像的width
、height
和stride
,我们可以将Intptr
转换为Bitmap
如下:
var bitmap = new Bitmap(width, height, stride, PixelFormat.Format24bppRgb, intptrImage);
但是 System.Drawing.Bitmap
在 Linux
上不再可用,我们必须使用 SixLabors.ImageSharp.Image
。
如何使用 ImageSharp
将 Intptr
转换为图像?
我找到了这个解决方案:
// 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);
这个解决方案工作正常。