Anzeigen eines Bildes aus dem Internet in Image

  • WPF MVVM
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von BlueLagoonX.

    Anzeigen eines Bildes aus dem Internet in Image

    Hallo miteinander :)

    Hab ein kleines Problem, und zwar möchte ich ein Bild aus dem Internet in einem Image anzeigen lassen.

    Kann man jetzt sagen, nichts leichter als das, einfach die Source Property des Image an eine Property As String binden und dann die URL zuweisen.

    Jetzt muss dieses Image aber auch Bilder von Platte anzeigen bzw. hab ich auch Funktionen, die dem Image dann ein Bitmap aus dem Speicher übergeben.

    Fakt ist, ich habe die Source Property an eine Property As ImageSource in meinem ViewModel gebunden.

    Weiss jemand wie ich da vorgehen könnte?
    Hallo

    Lass doch das Property als String und pbergebe entweder due URL oder den Pfad auf der Platte.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ja Problem war dass ich teilweise auch Bitmaps in einer Variablen gespeichert hab, die ich dann anzeigen musste.

    Hab aber ne Lösung gefunden:

    VB.NET-Quellcode

    1. Private Sub HoleBitmapAusWWW()
    2. Dim WebKlient As WebClient = New WebClient
    3. Dim DownloadedImage As Byte() = WebKlient.DownloadData("www.bild.xyz/xyz.jpg")
    4. Dim Bildspeicher As System.IO.MemoryStream = New System.IO.MemoryStream(DownloadedImage)
    5. Dim Titelbild As Bitmap = CType(System.Drawing.Bitmap.FromStream(Bildspeicher), Bitmap)
    6. CoverArt = BitmapToImageSource(Titelbild)
    7. End Sub
    Bei deiner Lösung bleiben viele Objekte offen nach Verlassen des Subs.
    Alles, was man disposen kann, sollte man auch disposen. Am besten direkt mit Usings arbeiten.

    Ebenso sollte man den (unter .Net 5+) veralteten Net.WebClient nicht mehr nutzen, lieber den neuen Net.Http.HttpClient

    So würde ich es lösen ...

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Link As New Uri("https://bild.xyz/xyz.jpg")
    3. Dim Img = GetImage(Link.AbsoluteUri)
    4. End Sub
    5. Public Function GetImage(Url As String) As Image
    6. Using Client As New Net.Http.HttpClient()
    7. Dim Data = Client.GetByteArrayAsync(Url).Result
    8. If Data IsNot Nothing AndAlso Data.Length > 0 Then
    9. Using MS As New IO.MemoryStream(Data)
    10. Return New Bitmap(Image.FromStream(MS))
    11. End Using
    12. Else
    13. Return Nothing
    14. End If
    15. End Using
    16. End Function

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „BlueLagoonX“ ()