Introduction
If you need to build a small, simple image file quickly, this utility makes it quite easy. The image file can be transparent, semitransparent, or opaque (any color), and as small as 1 pixel by 1 pixel. The image file can be saved as a GIF, JPEG, PNG, TIF, etc.
Background
Every now and then, for a web project or WinForms project, one needs to create an image file, perhaps a 1x16_transparent.png or a 32x16_red.gif or a 100x1_blue.jpeg. There are countless ways to create these. ImageFileBuilder, perhaps a pompous sounding name, just made my life a little easier.
Using the code
If you have Visual Studio 2005, then you should be able to use the project source code "out of the box" -- simply build and run. The code itself is not rocket science. It is reasonably documented. A side benefit of the code for Bitmap newbies is, it shows you simple examples of how to create a Bitmap, how to color it, and how to use the ImageFormat
enum to save the file in a format that matches the requested file extension.
Code for creating a Bitmap with a given color
public Bitmap CreateBitmap(int width, int height, Color clr)
{
try
{
Bitmap bmp = new Bitmap(width, height);
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
bmp.SetPixel(x, y, clr);
}
}
return bmp;
}
catch (Exception ex)
{
this.DoUpdateErrorMsg(ex.ToString());
Debug.WriteLine(ex.ToString());
return null;
}
}
Code for saving a Bitmap with different file types
public bool SaveBitmap(Bitmap bmp, string sOutputFilename)
{
bool bRet = false;
try
{
FileInfo fiOutputFile = new FileInfo(sOutputFilename);
ImageFormat imgFmtWant = ImageFormat.Png;
switch (fiOutputFile.Extension.ToUpper())
{
case ".BMP" : imgFmtWant = ImageFormat.Bmp; break;
case ".EMF" : imgFmtWant = ImageFormat.Emf; break;
case ".EXF" :
case ".EXIF": imgFmtWant = ImageFormat.Exif; break;
case ".GIF" : imgFmtWant = ImageFormat.Gif; break;
case ".ICO" : imgFmtWant = ImageFormat.Icon; break;
case ".JPG" :
case ".JPEG": imgFmtWant = ImageFormat.Jpeg; break;
case ".PNG" : imgFmtWant = ImageFormat.Png; break;
case ".TIF" :
case ".TIFF": imgFmtWant = ImageFormat.Tiff; break;
case ".WMF" : imgFmtWant = ImageFormat.Wmf; break;
default: sOutputFilename += ".png";
this.DoUpdateErrorMsg("WARNING: Output file " +
"name modified; Extension '.png' added.");
break;
}
bmp.Save(sOutputFilename, imgFmtWant);
bRet = true;
}
catch (Exception ex)
{
this.msErrorMsg += this.msEOL + ex.ToString();
bRet = false;
}
return bRet;
}