显示在Android和iOS中创建的Xamarin表单中的位图

时间:2017-01-19 14:06:56

标签: android ios bitmap xamarin.forms

Android的Umap和UIImage的Bitmap。有没有办法在Xamarin Forms Image控件中以某种方式显示它?

显然我需要依赖服务。我将有两个使用某些源创建位图或uiimage的实现,但是如何将这两个产品组合到一个表单控件中? Android和iOS方法都必须返回一些东西,图像控件可以理解和显示。我不知道那可能是什么。

编辑:如果可能,我会寻找一种不使用存储空间的方式。

EDIT2:

我尝试了Jasons的建议并且工作正常。

我在Android项目中创建一个位图并返回一个MemoryStream对象:

MemoryStream stream = new MemoryStream();
newImage.Compress(Bitmap.CompressFormat.Png, 0, stream);
return stream;

然后我在我的Xamarin.Forms图像控件中使用它:

var stream = DependencyService.Get<ICrossPlatformImageProcesor>().Combine_Images(imagePath);
stream.Position = 0;
img_ImageView.Source = Xamarin.Forms.ImageSource.FromStream(() => stream);

1 个答案:

答案 0 :(得分:0)

  

我将有两个使用某些源创建位图或uiimage的实现,但是如何将这两个产品组合到一个表单控件中?

您可以简单地使用Image Control xamarin表单,可以为每个平台专门加载图像,也可以下载它们以供显示。

有关详细信息,请参阅Working with Images

  

如果可能的话,我会寻找一种不使用存储空间的方式。

我不太明白这一点,如果你的意思是不使用记忆,那么我认为这是不可能的。如果您的意思是您的图片未保存在存储空间中,那么您的图片可能还有互联网上的URL地址?

无论如何,Xamarin.Forms中的图像控件支持图像源格式ImageSource实例,文件,Uri和资源,从uri加载图像,你可以简单地编码如下:

var webImage = new Image { Aspect = Aspect.AspectFit };
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"));