By David Fekke
January 17th, 2011
I have been developing a lot of windows workflows and web services in .NET recently. I came across a need to convert a WMF file (Windows Meta File) into a gif file. SQL Server Reporting Services can not display WMF files.
.NET 2.0 can convert and resize images natively. Here is how I converted the WMF files. First I added the following using statements;
using System.Drawing; using System.Drawing.Imaging;
InfoPath saves images as Base64 strings, and .NET treats this as a byte array. So I had to convert the WMF byte array to a gif byte array.
byte imageByteArray = DiagramImage; MemoryStream inStream = new MemoryStream(imageByteArray); StreamReader myStreamReader = new StreamReader(inStream); Image myImage = Image.FromStream(inStream); Bitmap myBitmap = new Bitmap(myImage); Graphics myGraphics = Graphics.FromImage(myBitmap); //Keep background white. myGraphics.Clear(Color.White); myGraphics.DrawImage(myImage, 0, 0, myImage.Width, myImage.Height); MemoryStream outStream = new MemoryStream(); myBitmap.Save(outStream, ImageFormat.Gif); byte gifByteArray = outStream.GetBuffer();