working with poner mostrar images imagenes imagen fromfile como c# ios xamarin.ios uiimage xamarin

with - UIImage cargado desde la URL en Xamarin/C#



xamarin forms imagesource fromfile (4)

Han pasado 4 años desde que esta pregunta fue respondida con esta publicación en el blog .

¿Existe una forma estándar de crear un UIImage con una imagen de una URL? Algo como:

UIImage image = UIImage.FromFile("http://foo.com/bar.jpg");

Siento que probablemente me estoy perdiendo algo realmente simple.


Con el nuevo soporte de espera / asincronización, puede hacer:

public async Task<UIImage> LoadImage (string imageUrl) { var httpClient = new HttpClient(); Task<byte[]> contentsTask = httpClient.GetByteArrayAsync (imageUrl); // await! control returns to the caller and the task continues to run on another thread var contents = await contentsTask; // load from bytes return UIImage.LoadFromData (NSData.FromArray (contents)); }

y llamas esto con:

someYourUIImageObjectOnUI.Image = await this.LoadImage ("some image url");


Desea asegurarse de cargar la imagen de manera asíncrona para que no bloquee su subproceso de interfaz de usuario. MonoTouch.Dialog incluye una ImageLoader (ver sec 5.3) que puede usar.

También hay un par de variaciones de UrlImageStore para ayudar con la carga de imágenes asíncronas.

Finalmente, si quieres hacerlo manualmente, hay una receta de Xamarin que puedes usar.


Intenté lo anterior, parece una gran idea, pero me aparece: no puedo convertir implícitamente el tipo System.Threading.Tasks.Task<MonoTouch.UIKit.UIImage>'' to Monotouch.UIKit.UIImage''

[encontré una solución] El problema fue porque el
obj.Image = await this.LoadImage (imageUrl) también debe estar en un método marcado como sincronización. ¡Entonces funciona!

Gracias


No es un trazador de líneas único, pero con muy pocas líneas puede hacer las suyas. P.ej

static UIImage FromUrl (string uri) { using (var url = new NSUrl (uri)) using (var data = NSData.FromUrl (url)) return UIImage.LoadFromData (data); }

Las llamadas, incluida la de UIImage , son seguras para subprocesos.