2011-01-12 3 views
2

J'ai un lien externe avec une image que je veux diffuser, mais je reçois cette erreur lorsque j'essaie.Comment tamponner une image à partir d'un lien externe

erreur "Les formats URI ne sont pas pris en charge."

J'ai essayé de diffuser: flux fileStream = new FileStream ("http://www.lokeshdhakar.com/projects/lightbox2/images/image-2.jpg", FileMode.Open); octet [] fileContent = nouvel octet [fileStream.Length];

Quelqu'un peut-il faire la lumière là-dessus.

Merci

Répondre

0

FileStream ne supporte pas les fichiers d'ouverture sur Internet.

Essayez ceci:

var webClient = new WebClient(); 
using(var fileStream = webClient.OpenRead("http://www.lokeshdhakar.com/projects/lightbox2/images/image-2.jpg")) 
{ 
    byte[] fileContent = new byte[fileStream.Length];  
} 
+0

J'ai essayé cela car il semblait simple mais cela ne fonctionne pas. J'ai l'erreur suivante: "Ce flux ne supporte pas les opérations de recherche." – simpleman

+0

J'ai essayé à nouveau avec peu de modifications et cela fonctionne aussi bien. super trucs. Au lieu de suivre le chemin complet, je prends la partie Image comme dans l'exemple ci-dessus: Image pic = Image.FromStream (fileStream); – simpleman

4

Le contructor FileStream vous utilisez doivent être munis d'un chemin sur votre disque dur local et non pas avec une URL externe.

Vous cherchez probablement pour cela:

string url = "http://www.lokeshdhakar.com/projects/lightbox2/images/image-2.jpg"; 
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); 
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
Stream stream = httpWebReponse.GetResponseStream(); 

Probablement aussi pour cela:

Image pic = Image.FromStream(stream); 
MemoryStream ms = new MemoryStream(); 
pic.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
Byte[] arr = ms.ToArray(); 
+0

wow cela fonctionne vraiment. cela signifie-t-il que l'image sera enregistrée temporairement? – simpleman

+0

Il ne sera pas temporairement enregistré sur le disque dur. Vous pouvez probablement obtenir l'octet [] de l'objet Stream. J'ai posté le deuxième extrait de code pour vous montrer comment vous avez accès à la manipulation de l'image. Vous pouvez y insérer votre algorithme de redimensionnement d'image (google pour C# redimensionner l'image). – citronas

+0

Salut merci, c'était vraiment pratique. J'ai eu un autre problème avec l'accès au fichier. le réseau auquel j'accède est un lien interne qui nécessite des informations d'identification. J'ai donc ajouté une ligne pour ce que je veux partager. httpWebRequest.Credentials = new NetworkCredential { UserName = nom d'utilisateur, Mot de passe = passowrd, Domaine = domaine }; – simpleman

Questions connexes