Mit WebRequest zu speichern, URL als Bild in VB.NET
Ich versuche zu schreiben, eine einfache routine, wo ich es übergeben Sie eine URL, und es geht und stellt den Inhalt der webresponse als jpg-Datei. Ich habe eine Lösung gefunden irgendwo in C# portiert und es zu vb.net aber wenn ich es laufen lasse, es löst eine argumentexception "- parameter ist nicht gültig", wenn zu instanziieren versucht, das Bild. Kann jemand einen Blick auf den folgenden code, und lassen Sie mich wissen, wenn ich bin auf dem richtigen Weg?
Sub SaveUrl(ByVal aUrl As String)
Dim response As WebResponse
Dim remoteStream As Stream
Dim readStream As StreamReader
Dim request As WebRequest = WebRequest.Create(aUrl)
response = request.GetResponse
remoteStream = response.GetResponseStream
readStream = New StreamReader(remoteStream)
Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(remoteStream)
img.Save(aUrl & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
response.Close()
remoteStream.Close()
readStream.Close()
End Sub
Zu Klären: ja, ich weiß, ich muss VIEL mehr code zu erreichen, was ich will zu tun, die zum Rendern/nehmen Sie einen Screenshot von einer URL (html, Bilder, alle markup, alles), und speichern Sie es als jpg-Vorschaubild.
Wenn Sie verwendet haben Google Chrome, die du gesehen hast die Start Seite, die Miniaturansichten aller Seiten, die Sie Häufig verwenden. So etwas wie, dass.
Update: Ok die ich gefunden habe, kommerziellen kostenpflichtigen Produkte um dies zu erreichen, wie http://www.websitesscreenshot.com/Index.html aber keine open-source-Implementierungen.
Er wird versuchen, sich ein Bild von der website. url in ein Bild umgewandelt. Also, wenn er verwenden würde : stackoverflow.com dies wird produzieren ein Bild von stackoverflow-Haupt-Seite in eine jpeg-format.
InformationsquelleAutor DaveJustDave | 2008-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur weil das Bild Klasse ist ein
.FromStream()
Methode bedeutet nicht, dass alle stream ist ein gültiges Bild, und die html-Antwort vom web-server sicher nicht ein gültiges Bild. Rendern einer web-Seite ist nicht eine "einfache routine". Es gibt eine Menge, die in ihm steckt.Könnten Sie versuchen, mithilfe des WebBrowser-Steuerelements, denn das können Sie tun eine Menge Arbeit für Sie.
InformationsquelleAutor Joel Coehoorn
Gut, entweder:
Oder erstellen ein Miniaturbild:
... vielleicht fügen Sie einige Fehler im handling. 😉
ja habe ich jetzt gelesen habe ist die Klärung, wie gut. Ich habe meine code vor, dass, da es im Grunde war sein code ist so gut, nur viel kürzer. Ich lasse es stehen, weil ich denke, es könnte noch nützlich sein für andere Menschen.
InformationsquelleAutor Konrad Rudolph
Den ich gerade gefunden habe, eine Deutsche code-snippet auf ActiveVB , erstellt einen screenshot form einer web-site. Vielleicht kann man darauf aufbauen? Leider ist der code nicht nur erklärt, in Deutsch, sondern auch in VB6. Doch, die Logik ist im Prinzip das gleiche und sollte nicht schwer zu Hafen .NET. Hoffe, das hilft.
InformationsquelleAutor Konrad Rudolph
Was wollen Sie tun?
Sind Sie versuchen, konvertieren Sie eine web-Seite zu JPEG? Dies erfordert ein bisschen mehr code, als das, was Ihr code versucht zu tun ist, um den download einer bereits vorhandenen Bild (z.B. ein gif, png oder ein anderes jpeg) auf und wandelt Sie in jpeg. Man braucht, um etwas zu Rendern des HTML-Dokuments, würden Sie brauchen, um ein Bild des gerenderten Dokument, und speichern als JPEG.
Sie können möglicherweise verwenden Sie eine Winforms-WebBrowser (msdn.microsoft.com/en-us/library/...). Ich weiß nicht, was Sie verwenden würden, um dann einen screenshot von diesem.
InformationsquelleAutor Yuliy
Es ist wahrscheinlich einfacher zu verwenden
System.Net.WebClient
, glaube ich, können Sie entfernen Sie alle, aber 2 oder 3 Zeilen code. also:WebClient.DownloadFile()
MSDN-Seite
InformationsquelleAutor Zachary Yates
Ich weiß, du bist zu Fragen für VB, aber hier sind einige C# - code, ich verwende in einem Projekt von mir, um zu erfassen lokalen thumbnails von Bild-URLs (asynchron). Ich habe versucht, die Streifen aus alle Projekt-spezifischen Sachen, so dass es Sinn macht, als stand-alone-Beispiel.
Und hier ist die wc_DownloadDataCompleted event-handler:
Bearbeiten
Ich glaube, ich sollte hinzufügen, dass dies in einer WPF-Anwendung - daher die Verwendung von "BitmapImage" und "BitmapFrame" zum decodieren des Streams. So kann es dir nicht helfen. Ich bin gonna lassen Sie es hier auf jeden Fall.
InformationsquelleAutor Matt Hamilton
Oder Sie könnten nur dazu:
InformationsquelleAutor Nox