我目前正在对修改当前位于在PCL项目的图片的应用程序。而我目前具有转换数据类型的麻烦。
目前,我试图找出我怎么能一个ImageSource的转换为位图。我读过一些网络上的答案,但他们似乎并没有为我工作。
我叫了DependencyService特定于平台的代码并通过ImageSource的作为参数。
函数签名如下:
public ImageSource BlurImage(ImageSource ImageSource)
{
return null;
}
这个函数应该创建一个从ImageSource的第一的位图,一旦所有的逻辑已经做了它应该转换回一个ImageSource的。
能否给我有人解释我应该如何转换的ImageSource成位图,反之亦然?
在此先感谢,汤姆
您可以使用下面的函数转换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;
}
和下一个用于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;
}