转换'Xamarin.Form.Image'类型'byte []'

时间:2015-03-18 13:02:07

标签: c# xamarin.ios xamarin xamarin.android xamarin.forms

我应该从网址获取图片并将其转换为byte[]。以下是我取得的成就

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

但现在我无法将图片类型转换为byte[]

这是正确的接近方式吗?任何形式的帮助将不胜感激。

4 个答案:

答案 0 :(得分:0)

我没试过这个,但是从我最初的想法开始你需要一个Stream。 为此,您可以使用StreamImageSource

从那里你可以使用this中的代码。

答案 1 :(得分:0)

其中的Xamarin.Forms使用IImageSourceHandler,其实现类似

  • ImageLoaderSourceHandler - 适用于UriImageSource
  • StreamImagesourceHandler - 适用于StreamImageSource

UriImageSource读取数据您应该使用ImageLoaderSourceHandler这是平台类。所以在每个平台下使用像

这样的代码
var handler = new ImageLoaderSourceHandler();
var uiimage = await handler.LoadImageAsync(source, new CancellationToken(), UIScreen.MainScreenScale);

然后,您可以从iOS下的UIImage或Android下的Bitmap获取任何数据。有很多教程如何从中获取byte []。

答案 2 :(得分:0)

FFImageLoading(https://github.com/molinch/FFImageLoading/CachedImageGetImageAsJPGGetImageAsPNG方法。这是一个直接的Xamarin.Forms Image类替换,具有许多其他功能。

以下是用于图像检索的代码(可以在Image类自定义渲染器中使用):

答案 3 :(得分:0)

使用WebClient从URL获取字节数组是可行的。

var webClient = new WebClient ();
byte[] byteImage = webClient.DownloadData (imageURL);