How to save an image from a picturebox to jpg

rah picture rah · May 10, 2013 · Viewed 49.7k times · Source

I have been able to save a file as a .jpeg, but the image won't load, has anyone got a suggestion?

    Private Sub Btnconfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnconfirm.Click

        MsgBox("A receipt will now be saved to your files", vbOKOnly, "Thank you for your purchase")

        SaveFileDialog1.ShowDialog()
        MsgBox("Thank you for choosing Tiny Theatre, have a nice day.", vbOKOnly, "Thank you")
        Me.Close()
    End Sub

    Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
        Dim FileToSaveAs As String = SaveFileDialog1.FileName

        Dim objwriter As New System.IO.StreamWriter(FileToSaveAs)
        objwriter.Write(PictureBox1)
        objwriter.Close()
    End Sub

Answer

nickvane picture nickvane · May 10, 2013

Didn't try it, but might this do it?

Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
    Dim FileToSaveAs As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, SaveFileDialog1.FileName)
    PictureBox1.Image.Save(FileToSaveAs, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub

If you need to set encoder parameters (like jpeg compression) you will need an overload of the Save method. See http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.image.aspx and http://msdn.microsoft.com/en-us/library/system.drawing.image.aspx

The provided code saves the picturebox control in a serialized form to a file that has an extension jpeg. Renaming a text.txt file to text.jpg doesn't make it a valid jpg image. This is the same.