Bild aus webBrowser-Steuerelement als Datei abspeichern
-
Hallo zusammen,
ich würde gerne Bilder einer Webseite abspeichern,
sprich alle <img>-Elemente als .jpg oder ähnliches auf der Festplatte speichern.Benutzen tu ich das Webbrowser-Element in der Version 2.0.0.0.
Selektieren tu ich sämtliche <img>-Elemente einer Webseite wie folgt:HtmlElementCollection bilder_col = browser.Document.GetElementsByTagName("img");
Mein erster Ansatz war mithilfe des "src"-Attributes die Bilder in eine Picturebox zu laden und dann zu speichern.
Funktioniert auch solange ich keinen Proxy-Server oder ähnlichen in den Internetoptionen des IE's verwende um ins Internet zu gehen.Mir fällt im Moment nix ein wie ich die Bilder speichern könnte.
Könnte mir jemand helfen oder hat vielleicht jemand eine Idee wie ich dieses Problem lösen könnte?Vielen Dank.
SRY FALSCH GEPOSTET GEHÖRT SICH EIGENTLICH IN DIE C#-SPARTE
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum C# und .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Nach langem suchen dachte ich fast schon ich hab eine Lösung.
Mittels Screenshot des Controles hab ich versucht zumindest mal ein Bild zu bekommen.
Über das zuschneiden hätte ich mir dann später gedanken gemacht.Screenshot hab ich wie folgt realisiert:
public Bitmap Screenshot(Control Ctrl) // Erstellt einen Screenshot des übergebenen Controls / der übergebenen Form. // Erfordert Microsoft .NET >= 2.0 (Control.DrawToBitmap) // Der Aufrufer ist für eine Entsorgung der returnierten Bitmap zuständig. { int w = Ctrl.Width; // Breite des Controls / der Form int h = Ctrl.Height; // Höhe des Controls / der Form // Bitmap für das Abbild des Controls / der Form bereitstellen Bitmap bmp = new Bitmap(w, h); // Screenshot vornehmen und zurückgeben Ctrl.DrawToBitmap(bmp, Rectangle.FromLTRB(0, 0, w, h)); return bmp; }
Auf meinen Notebook (IE7, VS 2008) und ohne Internet hat der Screenshot mit dem Browserinhalt ("Seite kann nicht angezeitg werden") funktioniert.
Auf meinem Arbeitsrechner allerdings (IE6, VS 2005) mit Internet bleibt der Screenshot des Browsers leer bzw. ist alles weiß.Woran liegt das?
Gibt es eine andere Möglichkeit?
-
Mit WebClient solltest du das Bild runterladen können.
public void DownLoad(string url,string localPath) { WebClient wc = new WebClient(); byte[] buffer = wc.DownloadData(netPath); File.WriteAllBytes(localPath, dummy); }
-
Danke für die Antwort Andorxor.
Wie hänge ich dem WebClient ein Automatisches Konfigurationsscript an?
Ich weiss das es eine WebProxy-Class gibt.
In der MSDN steht auch das das Ding sowas kann, aber irgendwas scheine ich falsch zu machen?public void DownLoad(string url, string localPath) { System.Net.WebProxy proxyObject = new System.Net.WebProxy("http://pkonfig", true); System.Net.WebClient wc = new System.Net.WebClient(); wc.Proxy = proxyObject; byte[] buffer = wc.DownloadData(url); File.WriteAllBytes(localPath, buffer); }
Fehlermeldung beim Ausführen "404 Nicht gefunden" bei Versuch wc.DownloadData(url) auszuführen.