Je suis en train de faire une chose simple mais je ne peux pas ...Synchrone télécharger une image depuis l'URL
Je veux juste obtenir un BitmapImage à partir d'une URL Internet, mais ma fonction ne semble pas fonctionner correctement, cela ne me rend qu'une petite partie de l'image. Je sais que WebResponse fonctionne en mode asynchrone et c'est certainement la raison pour laquelle j'ai ce problème, mais comment puis-je le faire de manière synchrone?
Voici ma fonction:
internal static BitmapImage GetImageFromUrl(string url)
{
Uri urlUri = new Uri(url);
WebRequest webRequest = WebRequest.CreateDefault(urlUri);
webRequest.ContentType = "image/jpeg";
WebResponse webResponse = webRequest.GetResponse();
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = webResponse.GetResponseStream();
image.EndInit();
return image;
}
Merci beaucoup pour votre aide.
Je n'ai pas beaucoup de chance avec cela, mon image est encore partiellement téléchargée sur le MemoryStream, peut-être vous pouvez me fournir un exemple de code? – Karnalta
Lors de la lecture du flux de réponse, il ne remplira pas le tampon, comme ce serait le cas lors de la lecture d'un fichier local. Ainsi, la quantité d'octets lus serait inférieure à la taille du tampon. Cependant, il sera supérieur à 0, ce qui indique que la fin du fichier n'a pas encore été atteinte. Je suppose que c'est la clé de l'échec de la lecture de l'image complètement à partir de l'URL. – treaschf
Ok, cet exemple fonctionne pour télécharger l'image, je devrais maintenant être en mesure de convertir ce fichier en BitmapImage. – Karnalta