En este caso tal vez no sea fácil identificar el formato por medio de la extensión del archivo, sin embargo, regularmente los dos primeros bytes de una imagen pueden ser utiles para identificar si es formato BMP o JPEG.
Por ejemplo en el caso del BMP los dos primeros bytes de su encabezado lo identifican así:
Magic value =4D42h ("BM") ASCII
Cita:
All versions of BMP format files begin with the following 14-byte header:
typedef struct _WinBMPFileHeader
{
WORD FileType; /* File type, always 4D42h ("BM") */
DWORD FileSize; /* Size of the file in bytes */
WORD Reserved1; /* Always 0 */
WORD Reserved2; /* Always 0 */
DWORD BitmapOffset; /* Starting position of image data in bytes */
} WINBMPFILEHEADER;
FileType holds a 2-byte magic value used to identify the file type; it is always 4D42h or "BM" in ASCII. If your application reads Windows bitmap files, make sure to always check this field before attempting to use any of the data read from the file.
|
Algo similar sucede con los archivos JPEG, en este caso el campo se llama SOI y corresponde a:
Start of Image (SOI) marker -- two bytes (FFD8h)
Prueba leyendo los dos primeros bytes de la imagen para identificar el formato.
Saludos