83 votes

Image en tableau d'octets à partir d'une url

J'ai un lien hypertexte qui contient une image.

Je dois lire/charger l'image de cet hyperlien et l'affecter à un tableau d'octets ( byte[] ) en C#.

Merci.

177voto

Josh Points 38617

WebClient.DownloadData est le moyen le plus simple.

var webClient = new WebClient();
byte[] imageBytes = webClient.DownloadData("http://www.google.com/images/logos/ps_logo2.png");

Modification par une tierce partie : Veuillez noter que WebClient est jetable, vous devez donc utiliser using :

string someUrl = "http://www.google.com/images/logos/ps_logo2.png"; 
using (var webClient = new WebClient()) { 
    byte[] imageBytes = webClient.DownloadData(someUrl);
}

0 votes

Merci, je me rapproche, mais je n'arrive pas à obtenir les octets de l'image, cela m'aiderait beaucoup si vous me donniez un exemple rapide.

0 votes

Qu'est-ce que vous obtenez alors ? Vous pouvez vous procurer un outil appelé Fiddler qui vous montrera la requête et la réponse, ce qui pourrait vous aider à résoudre les problèmes. Il n'y a rien de plus simple que WebClient.DownloadData.

0 votes

Merci, mais j'obtiens "The remote server returned an error : (404) Non trouvé."

15voto

Dunc Points 4360

Si vous avez besoin d'une version asynchrone :

using (var client = new HttpClient())
{
    using (var response = await client.GetAsync(url))
    {
        byte[] imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
     }
}

4voto

firestorm Points 33

Introduction de .NET 4.5 WebClient.DownloadDataTaskAsync() pour une utilisation asynchrone.

Exemple :

using ( WebClient client = new WebClient() )
{
  byte[] bytes = await client.DownloadDataTaskAsync( "https://someimage.jpg" );
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X