我发现了一个例子,但是这个例子使用“ Int32Rect ”类System.Windows的,我们不能使用这个库的Android或iOS
对于位图,我用的是System.Drawing.Common
public static System.Drawing.Bitmap BitmapSourceToBitmap2(BitmapSource srs)
{
int width = srs.PixelWidth;
int height = srs.PixelHeight;
int stride = width * ((srs.Format.BitsPerPixel + 7) / 8);
IntPtr ptr = IntPtr.Zero;
try
{
ptr = Marshal.AllocHGlobal(height * stride);
srs.CopyPixels(new Int32Rect(0, 0, width, height), ptr, height * stride, stride);
using (var btm = new System.Drawing.Bitmap(width, height, stride, System.Drawing.Imaging.PixelFormat.Format1bppIndexed, ptr))
{
// Clone the bitmap so that we can dispose it and
// release the unmanaged memory at ptr
return new System.Drawing.Bitmap(btm);
}
}
finally
{
if (ptr != IntPtr.Zero)
Marshal.FreeHGlobal(ptr);
}
}
那么,如何转换的ImageSource为位图的跨平台的项目?
我试图按照指南 ,这又有什么不完整的信息,我试图填补轻描淡写我自己
该项目甚至编译! 然而,当我尝试从GetBitmapFromImageSourceAsync(...)方法得到的结果,应用程序冻结(无限循环)
var test = GetBitmapFromImageSourceAsync(image, Android.App.Application.Context);
var bitmap = test.Result;
请明白为什么它不工作? 或者,请给我一个链接到您的项目,我会弄明白
https://github.com/StriBog45/XamarinImage