我目前正在开发一种用于修改PCL项目中当前图片的应用程序。而且我目前在转换数据类型时遇到麻烦。
我目前正在尝试弄清楚如何将ImageSource转换为位图。我已经在互联网上阅读了一些答案,但它们似乎对我没有用。
我使用DependencyService调用特定于平台的代码,并将ImageSource作为参数传递。
函数签名如下:
public ImageSource BlurImage(ImageSource ImageSource)
{
return null;
}
此功能应首先从ImageSource创建位图,一旦完成所有逻辑,它应转换回ImageSource。
有人可以向我解释如何将ImageSource转换为位图,反之亦然吗?
预先感谢, 汤姆
答案 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;
}
下一个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;
}