It is rather common that developers wish to load various types of files into a TBitmap for manipulation, such as JPEG, PNG, or TIFF. The TBitmap is widely used as the most standard graphic for performing any type of imaging in Delphi. The question is - how to load any format of image into a TBitmap?
Delphi VCL's Graphics unit contains another class called TWICImage. This class, based on a TGraphic (just like a TBitmap), allows you to load virtually any type of image file. WIC Image stands for Windows Imaging Component. It wraps the functionality of Microsoft's WIC image. The formats which are supported depend on the formats which are registered inside of Windows.
IMPORTANT: TWICImage is only available on Windows XP SP3 or higher operating systems and relies on DirectX runtime. If your application is expected to run apart from these requirements, then you will need to recognize this yourself and handle your imaging differently.
TWICImage is used very similarly to the TBitmap. You can use LoadFromFile() and SaveToFile() for simple file loading/saving, and Assign() to/from other TGraphic classes.
This loads a PNG file into a WIC Image, assigns it to a Bitmap, and saves it to a BMP file.
The TWICImage contains a property called ImageFormat which determines the format of the image (once loaded). You can change this format to change the way the image is handled, and eventually the way that it is saved back to a file.
Here are the possible property values for TWICImage.ImageFormat:
Here's Embarcadero's documentation on the TWICImage: