Есть ли решение для преобразования ImageSource в Android Bitmap и наоборот в Xamarin.Forms - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я работаю над приложением, которое изменяет изображение, которое в данный момент находится в проекте PCL.И в настоящее время у меня возникают проблемы с преобразованием типов данных.

В настоящее время я пытаюсь выяснить, как я могу преобразовать ImageSource в растровое изображение.Я прочитал некоторые ответы в Интернете, но они, похоже, не работают для меня.

Я вызываю код для платформы с помощью DependencyService и передаю ImageSource в качестве параметра.

Сигнатура функции выглядит следующим образом:

        public ImageSource BlurImage(ImageSource ImageSource)
        {

            return null;
        }

Эта функция должна сначала создать растровое изображение из ImageSource, а после того, как вся логика будет выполнена, она должна быть преобразована обратно в ImageSource.

Может кто-тообъясните мне, как я должен преобразовать ImageSource в растровое изображение и наоборот?

Заранее спасибо, Том

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете использовать приведенную ниже функцию для преобразования ImageSource в Bitmap:

 private async Task<Bitmap> GetImageFromImageSource(ImageSource imageSource, Context context)
    {
        IImageSourceHandler handler;

        if (imageSource is FileImageSource)
        {
            handler = new FileImageSourceHandler();
        }
        else if (imageSource is StreamImageSource)
        {
            handler = new StreamImagesourceHandler(); // sic
        }
        else if (imageSource is UriImageSource)
        {
            handler = new ImageLoaderSourceHandler(); // sic
        }
        else
        {
            throw new NotImplementedException();
        }

        var originalBitmap = await handler.LoadImageAsync(imageSource, context);         

        return originalBitmap;
    }

и функцию Next для Bitmap в ImageSource:

public async Task<ImageSource> GetBytesFromImage(Bitmap bitmap)
 {
    ImageSource imgSource;
    using (var stream = new MemoryStream())
    {
        bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream); // You can change the compression asper your understanding
        imgSource=ImageSource.FromStream(stream);
    }
   return imgSource;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...