What is the difference between System.Drawing.Image and System.Drawing.Bitmap?

Bitmap inherits from Image:

System.Drawing.Bitmap : System.Drawing.Image
{ }

Image is an abstract class, this means:

The abstract modifier indicates that the thing being modified has a missing or incomplete implementation.

Bitmap is a sealed class, this means:

When applied to a class, the sealed modifier prevents other classes from inheriting from it.

See the following:

Bitmap bmp = new Bitmap(filename); // Works
Image img = new Image(); // The compiler says: "Cannot access internal constructer 'Image' here.

This is because Image is not meant to be used this way. It just provides functionality for the Bitmap class.

Thus use Bitmap when dealing with pixelated images, like jpeg, png, bmp, etc.

If you expect no specific type of image in your method and the methods of Image are sufficient, use the more general Image as parameter type. This method will then accept other classes inheriting from Image as well, for example Metafile.


Am not sure what you mean difference?

System.Drawing.Image is the base class for System.Drawing.Bitmap.

System.Drawing.Image is abstract class as well, so you can't create instance of it. You'll have to create instance of System.Drawing.Bitmap only.

Image.FromFile, Image.BlahBlah... returns you instance of Bitmap only.