public static SupportedExtensions DetermineImageType(Stream imgData)
{
SupportedExtensions ext = SupportedExtensions.UNKNOWN;
// KFreon: Save position and go back to start
long originalPos = imgData.Position;
imgData.Seek(0, SeekOrigin.Begin);
var bits = new byte[8];
imgData.Read(bits, 0, 8);
// BMP
if (BMP_Header.CheckIdentifier(bits))
ext = SupportedExtensions.BMP;
// PNG
if (PNG_Header.CheckIdentifier(bits))
ext = SupportedExtensions.PNG;
// JPG
if (JPG_Header.CheckIdentifier(bits))
ext = SupportedExtensions.JPG;
// DDS
if (DDS_Header.CheckIdentifier(bits))
ext = SupportedExtensions.DDS;
// GIF
if (GIF_Header.CheckIdentifier(bits))
ext = SupportedExtensions.GIF;
if (TIFF_Header.CheckIdentifier(bits))
ext = SupportedExtensions.TIF;
// TGA (assumed if no other matches
if (ext == SupportedExtensions.UNKNOWN)
ext = SupportedExtensions.TGA;
// KFreon: Reset stream position
imgData.Seek(originalPos, SeekOrigin.Begin);
return ext;
}