Bitmap zu JPEG zu String

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von JackBauer.

    Bitmap zu JPEG zu String

    Hey,

    Ich habe bereits folgenden Code:

    VB.NET-Quellcode

    1. 'Screen
    2. Dim capture As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
    3. Dim Input As Graphics = Graphics.FromImage(capture)
    4. Input.CopyFromScreen(New Point(0, 0), New Point(0, 0), My.Computer.Screen.Bounds.Size)
    5. 'Convertieren
    6. capture.Save(Application.StartupPath & "\bild.jpeg", Imaging.ImageFormat.Jpeg)
    7. 'String
    8. Dim imageout As String = ConvertImage.ConvertImageToString(Application.StartupPath & "\bild.jpeg")
    9. 'My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\bild.jpeg")
    10. MsgBox(imageout)
    11. Public Class ConvertImage
    12. Public Shared Function ConvertImageToString(ByVal Path As String) As String
    13. Dim Result As String = String.Empty
    14. If Path Is Nothing Then
    15. Throw New ArgumentException("Fehler in der Pfaduebergabe...")
    16. Else
    17. Try
    18. If File.Exists(Path) Then
    19. Dim img As Image = Image.FromFile(Path)
    20. Using ms As MemoryStream = New MemoryStream
    21. img.Save(ms, img.RawFormat)
    22. Dim Bytes() As Byte = ms.ToArray()
    23. Result = Convert.ToBase64String(Bytes)
    24. End Using
    25. Else
    26. Result = String.Empty
    27. End If
    28. Catch ex As Exception
    29. MessageBox.Show(ex.Message(), "Info")
    30. End Try
    31. End If
    32. Return Result
    33. End Function
    34. End Class


    Die bild.jpeg wird zwar erstellt und anscheind auch convertiert aber bei dem Result Covertimage bekomme ich garnichts zurück und das ohne Fehlermeldung warum?

    Danke vorraus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „JackBauer“ ()

    Du bekommst sehrwohl ewas zurück, auch wenn Du es nicht siehst. :thumbsup:
    Setze auf die Zeile

    VB.NET-Quellcode

    1. MsgBox(imageout)
    einen Haltepunkt und sieh Dir imageout an:
    Der String fängt bei mir so an:

    /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAQ4B4ADASIAAhEBAxEB/
    Bei Dir müsste er so ähnlich aussehen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Bei mir wird auch nichts angezeigt.
    Ich denke mal, "/9" wird als Tabulator interpretiert, /4 als EndOfText. ==> keine Anzeige.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich will jetzt noch denn string in eine andere Form copieren und dort per Picturebox anzeigen lassen via my.settings es geht aber nicht:

    VB.NET-Quellcode

    1. My.Settings.screen = tmp.ToString
    2. screen.Show()


    screen:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. If My.Settings.screen = "" Then
    3. Else
    4. Dim img As Image = ConvertImage.ConvertStringToImage(My.Settings.screen)
    5. PictureBox1.Image = img
    6. My.Settings.screen = ""
    7. End If
    8. End Sub


    Sobald der String in my.settings übergeben wird hängt sich die Komplette screen Form auf owohl der Timer nichts abekommt. Das teil ist egtl ein String aber warum passiert sowas?
    Bytearray to Image / Image to Bytearray
    String in Byte Array und zurück wandeln
    Eigentlich brauchst nicht Byte in String konvertieren, es reicht wenn nur in ByteArray konvetierst.

    Sobald der String in my.settings übergeben wird hängt sich die Komplette screen Form

    Du muß wieder in Bitmap konvertieren. (siehe beispiele)
    An deine stelle würde die ganze konvertierungs funktionen in Modul/Klasse packen und dann aufrufen dort wo sie gebraucht werden.
    Z.b BytArray/StringArray kannst in Modul/Klasse in eine Variable zwieschen speichern.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SystemUnknow“ ()

    Danke habe es bereits anders gelöst nun habe ich das problem das bei ca jedem 2 ten mal das passiert:

    Allgemeiner Fehler in GDI+. wenn ich die Exeption abfange.

    Code:

    VB.NET-Quellcode

    1. 'Screen
    2. Dim capture As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
    3. Dim Input As Graphics = Graphics.FromImage(capture)
    4. Input.CopyFromScreen(New Point(0, 0), New Point(0, 0), My.Computer.Screen.Bounds.Size)
    5. 'Convertieren
    6. Try
    7. capture.Save(Application.StartupPath & "\bild.jpeg", Imaging.ImageFormat.Jpeg) 'Fehler tritt hier auf
    8. Catch ex As Exception
    9. MsgBox(ex.Message)
    10. End Try


    Wie kann ich das beheben?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „JackBauer“ ()