C : JPEG Magic Bytes

#include <stdio.h>
#include  <stdlib.h>

/* Verifie que le buffer est une image au format jpeg */
int isJpeg(unsigned char buf[], int fileSize)
{
    if(buf[0] == 0xff && buf[1] == 0xd8 && buf[fileSize -2] == 0xff && buf[fileSize -1] == 0xd9)
    {
        return 1;
    }
    return 0;
}

int main(int argc , char *argv[])
{


    FILE * file  = fopen(argv[1], "rb");

    /* Si le fichier est ouvert */
    if(file)
    {

        /* Trouve la taille du fichier */
        fseek(file, 0, SEEK_END);
        long fsize = ftell(file);
        rewind(file);

        /* Allocation du buffer selon la taille du fichier */
        unsigned char *buf = malloc(fsize);

        /* Remplir le buffer */
        fread(buf, sizeof(unsigned char), fsize, file);


        if(isJpeg(buf, fsize) == 1)
        {
            printf("%s", "Le fichier est un JPEG.");
        }

    }


    return 0;
}

Commentaires