Как преобразовать ImageSource в Bitmap для кроссплатформенного проекта (xamarin)

Я нашел пример, но этот пример используйте "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;

Пожалуйста, посмотрите, почему это не работает? Или дайте пожалуйста ссылку на ваш проект и я разберусь

https://github.com/StriBog45/XamarinImage


person StriBog    schedule 19.02.2019    source источник
comment
Я бы попробовал использовать SkiaSharp для этого   -  person Jason    schedule 20.02.2019
comment
Вот аналогичная проблема forums.xamarin.com/discussion /43023/   -  person Lucas Zhang    schedule 20.02.2019
comment
@ LucasZhang-MSFT Я попытался загрузить zip-файл из ответа, но не смог скомпилировать его для проверки. Вижу, что он использует XLabs, попробую разобраться в коде   -  person StriBog    schedule 20.02.2019
comment
Я автор этого блога, и я думаю, что ваша проблема в том, что вы используете контекст приложения, и вам лучше использовать Плагин CurrentActivity   -  person FreakyAli    schedule 11.03.2019
comment
Кроме того, я вижу, что вы используете System.Drawing.Bitmap, тогда как Android использует Android.Graphics.Bitmap.   -  person FreakyAli    schedule 11.03.2019
comment
@G.hakim Все сделал, не помогло, гитхаб обновился   -  person StriBog    schedule 11.03.2019
comment
@G.hakim Я СДЕЛАЛА ЭТО! Моя проблема была в синхронизации функции, а точнее в ее отсутствии   -  person StriBog    schedule 12.03.2019
comment
@StriBog, я не уверен, что вы имеете в виду, но в любом случае молодец, во-вторых, я просто хотел, чтобы вы указали на проблемы, с которыми вы столкнулись в отношении понимания, в моем блоге!   -  person FreakyAli    schedule 12.03.2019