Image vs Bitmap class
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
In the world of digital graphics programming using the .NET framework, particularly with C#, handling images efficiently is crucial. Two fundamental classes from the `System.Drawing` namespace often come into play: the `Image` class and the `Bitmap` class. Understanding the differences between these two can make your work easier, whether you're developing a graphics-rich application or performing simple image manipulations.
Technical Explanation
Image Class
The `Image` class is an abstract base class that provides functionality for the manipulation of various image file types, including BMP, GIF, EXIF, JPG, PNG, and TIFF. Since it's abstract, you can't instantiate the `Image` class directly. Instead, it provides a foundation upon which more specific classes like `Bitmap` (which is not abstract) are built.
- Usage: The `Image` class highly relies on its derived classes and functions primarily as a foundation to:
- Load images from files, streams, or other sources.
- Determine attributes of the image, such as its width, height, and pixel format.
- Key Properties and Methods:
- `Width` and `Height` provide access to the dimensions of an image.
- `Size` returns the size of the image.
- `PixelFormat` provides the pixel format of the image.
- `FromFile(string filename)` is a static method to create an `Image` instance from a file.
Bitmap Class
The `Bitmap` class is a widely used class derived from the `Image` class. It represents an image defined by an array of pixels, which is stored in memory. It provides additional functionality that makes it highly suitable for editing and saving raster images.
- Usage: The `Bitmap` class is convenient for:
- Editing and displaying images.
- Performing pixel manipulations directly.
- Creating images from scratch or existing files for editing.
- Key Properties and Methods:
- `SetPixel(int x, int y, Color color)` allows setting the color of a specified pixel.
- `GetPixel(int x, int y)` retrieves the color of a specified pixel.
- `LockBits` and `UnlockBits` methods provide more advanced operations for directly manipulating image data.
Differences in Detail
The essential difference between the `Image` and `Bitmap` classes is mainly about their use cases. `Image` is for general purposes, such as loading and saving images irrespective of their formats, while `Bitmap` is more specialized in manipulating the actual data of a raster image format (pixel-by-pixel operations).
Example
Below is a simple example demonstrating the usage of the `Image` and `Bitmap` classes:

