Library code snippets

Crafty Conversion Between Graphic Formats

Need a function to convert between bitmap, GIF, EMF, JPEG, PNG, WMF, and ICO image formats, among others? Don’t buy a third-party control: this conversion is exactly what my next crafty little snippet does. And all in a mere dozen lines of code.

Just call ConvertImage, passing in the filename of your current file, the desired format of your new file (using the enumeration), and your new filename. And that’s it:

Public Sub ConvertImage(ByVal Filename As String, _
    ByVal DesiredFormat As System.Drawing.Imaging.ImageFormat, _
    ByVal NewFilename As String)
    ' Takes a filename and saves the file in a new format
    Try
        Dim imgFile As System.Drawing.Image = _
            System.Drawing.Image.FromFile(Filename)
        imgFile.Save(NewFilename, DesiredFormat)
    Catch ex As Exception
        Throw ex
    End Try
End Sub

Here’s an example of using this to convert a GIF image into a Windows bitmap:

ConvertImage("c:\img1.gif", System.Drawing.Imaging.ImageFormat.Bmp, "c:\img2.bmp")

Comments

  1. 14 May 2006 at 15:11

    I've tried this code, and although it can convert a gif to a bitmap, it leaves the file with indexed colours. This means you can't do functions such as bmp.setPixel().

  2. 12 Sep 2003 at 18:21

    Unfortunately this doesn't work when converting an image to ICO or WMF there is a KB 316563 which statest that the ICO and WMF formats are readonly for conversion purposes. If you attempt to use them for write they default to PNG.

  3. 01 Jan 1999 at 00:00

    This thread is for discussions of Crafty Conversion Between Graphic Formats.

Leave a comment

Sign in or Join us (it's free).

Karl Moore

Related podcasts

  • xpert to Expert: Inside Concurrent Basic (CB)

    "Concurrent Basic extends Visual Basic with stylish asynchronous concurrency constructs derived from the join calculus. Our design advances earlier MSRC work on Polyphonic C#, Comega and the Joins Library. Unlike its C# based predecessors, CB adopts a simple event-like syntax familiar to VB progr...

We'd love to hear what you think! Submit ideas or give us feedback