Я нашел пример, но этот пример используйте "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 в Bitmap для кроссплатформенного проекта?
Я пытался следовать гайд, в нем была неполная информация и я попытался заполнить занижение самостоятельно
Проект даже компилируется! Однако, когда я пытаюсь получить результат с помощью метода GetBitmapFromImageSourceAsync (…), приложение зависает (бесконечный цикл)
var test = GetBitmapFromImageSourceAsync(image, Android.App.Application.Context);
var bitmap = test.Result;
Пожалуйста, посмотрите, почему это не работает? Или дайте пожалуйста ссылку на ваш проект и я разберусь
System.Drawing.Bitmap
, тогда как Android используетAndroid.Graphics.Bitmap
. - person FreakyAli   schedule 11.03.2019