是否有解决方案将Xamarin.Forms中的ImageSource转换为Android位图,反之亦然

时间:2019-02-11 13:38:56

标签: c# android xamarin bitmap imagesource

我目前正在开发一种用于修改PCL项目中当前图片的应用程序。而且我目前在转换数据类型时遇到麻烦。

我目前正在尝试弄清楚如何将ImageSource转换为位图。我已经在互联网上阅读了一些答案,但它们似乎对我没有用。

我使用DependencyService调用特定于平台的代码,并将ImageSource作为参数传递。

函数签名如下:

        public ImageSource BlurImage(ImageSource ImageSource)
        {

            return null;
        }

此功能应首先从ImageSource创建位图,一旦完成所有逻辑,它应转换回ImageSource。

有人可以向我解释如何将ImageSource转换为位图,反之亦然吗?

预先感谢, 汤姆

1 个答案:

答案 0 :(得分:0)

您可以使用以下函数将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;
    }

下一个BitmapImageSource

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;
  }