[ERLEDIGT] Bild aus Picturebox speichern

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von DiDi.

    [ERLEDIGT] Bild aus Picturebox speichern

    Okay Leute,
    hier mein Problem:

    Ich lade per Code ein Bild in 2 unterschiedlich große Pictureboxen.
    Nun möchte ich die beiden Pictureboxen als *.jpeg abspechern -
    und zwar in der Größe der Pictureboxen.
    Sinn des ganzen ist es, dass ich ein Bild in 2 verschiedenen Größen abspeichere!

    Hier meine Codes:

    Code zum Laden des Bildes in die 2 unterschiedlich großen Pictureboxen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim OpenFileDialog1 As New OpenFileDialog
    3. With OpenFileDialog1
    4. .CheckFileExists = True
    5. .ShowReadOnly = False
    6. .Filter = "All Files|*.*|Bitmap Files (*)|*.bmp;*.gif;*.jpg"
    7. .FilterIndex = 2
    8. If .ShowDialog = DialogResult.OK Then
    9. PictureBox1.Image = Image.FromFile(.FileName)
    10. PictureBox2.Image = Image.FromFile(.FileName)
    11. End If
    12. End With
    13. End Sub





    Code zum abspeichern der beiden Pictureboxen:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. If IO.Directory.Exists(Application.StartupPath & "\Images\") = False Then
    3. IO.Directory.CreateDirectory(Application.StartupPath & "\Images\")
    4. End If
    5. Dim filename As String = Application.StartupPath & "\Images\" & "1.jpeg"
    6. PictureBox1.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg)
    7. Dim filename2 As String = Application.StartupPath & "\Images\" & "2.jpeg"
    8. PictureBox2.Image.Save(filename2, System.Drawing.Imaging.ImageFormat.Jpeg)
    9. End Sub


    Es funktioniert alles, bis auf dass die beiden abgespeicherten *.jpeg die Originalgröße haben.
    Also meine Pictureboxen sind 160 x 120 und 320 x 240 groß, die gespeicherten Bilder jedoch beide 2048 x 1536 groß.
    Wie kann ich das Bild in der Größe der Picturebox abspeichern??

    MfG DiDi90

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

    @Adam
    danke für die schnelle Hilfe!

    Mein neuer Code:

    VB.NET-Quellcode

    1. Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. Dim Pic1 As New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
    3. Using g As Graphics = Graphics.FromImage(Pic1)
    4. g.Clear(PictureBox1.BackColor)
    5. End Using
    6. Using dlg As New SaveFileDialog
    7. dlg.Filter = "JPG-Dateien|*.jpg"
    8. If (dlg.ShowDialog = Windows.Forms.DialogResult.OK) Then
    9. Pic1.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
    10. End If
    11. End Using
    12. Pic1.Dispose()
    13. End Sub


    Er verkleinert zwar das Bild auf die Größe der Picturebox,
    ABER es wird nur der Hintergrund der PicBox (BackColor) gespeichert.
    Was mache ich falsch? ?(

    Hab schon meine Finger wund gegooglet aber nichts brauchbares gefunden :(

    MfG DiDi

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

    VB.NET-Quellcode

    1. Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. Dim Pic1 As New Bitmap(PictureBox1.BackgroundImage)
    3. Dim g As Graphics = Graphics.FromImage(Pic1)
    4. Dim dlg As New SaveFileDialog
    5. dlg.Filter = "JPG-Dateien|*.jpg"
    6. If dlg.ShowDialog() = DialogResult.OK Then
    7. Pic1.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
    8. End If
    9. Pic1.Dispose()
    10. End Sub


    So, der Code speichert das backgroundimage der Picturebox.
    Vielen Dank Devilx1! :thumbsup:

    Hab nur in der einen Zeile noch eine Änderung vornehmen müssen, dass es in der Größe der PicBox gespeichert wird.

    VB.NET-Quellcode

    1. Dim Pic1 As New Bitmap(PictureBox1.Image, PictureBox1.Width, PictureBox1.Height)



    Endlich klappt das ganze :D

    MfG DiDi