Écrire un fichier image JPG en C

Je lire fichier d'image JPEG et de stocker le nombre de bits dans un fichier texte. Maintenant, je veux revenir à l'image JPEG à l'aide de ces bits dans le fichier texte. J'ai essayé d'écrire un fichier binaire, mais il n'est pas en mesure de récupérer le fichier de l'image.

Merci de m'orienter dans la bonne direction. Je suis busting ma tête en ce pour un couple de jours, mais pas de chance jusqu'à présent.

Voici mon code pour l'écriture de fichier JPG:

int length;
unsigned char *inData;  
char Buffer[9];
int c = 0, x;
/* file.txt has single bit per line. */
FILE *reader = fopen(file.txt, "r"); 
FILE *writer = fopen("output.JPG","wb");

fseek(reader, 0, SEEK_END);
length=ftell(reader);
fseek(reader, 0, SEEK_SET);

for(x=0; x < length; x++){
    fscanf(reader, "%d", &inData);
    if(c <= 8){       /*  reading 8-bits  */
        Buffer[c] = inData;
    } else {
        fwrite(&Buffer, sizeof(Buffer), 1, writer);
        c = 0;
    }
    c++;
}

fclose(reader);
fclose(writer);

Voici l'extrait de code pour la lecture input.JPG et l'écriture de ses bits à file.txt

    char *buffer;
int fileLen;
FILE *file = fopen("inputIM.JPG", "rb");

fseek(file, 0, SEEK_END);
fileLen=ftell(file);
fseek(file, 0, SEEK_SET);

buffer=(char *)malloc(fileLen+1);
fread(buffer, fileLen, 1, file);
fclose(file);
convertToBit(&buffer, fileLen);
free(buffer);
}

//convert buffer data to bits and write them to a text file   
convertToBit(void *buffer, int length)
{
int c=0;
int SIZE = length * 8;
unsigned char bits[SIZE + 1];
unsigned char mask = 1;
unsigned char byte ;
int i = 0;
FILE *bitWRT = fopen("file.txt", "w");

for (c=0;c<length;c++)
{
    byte = ((char *)&buffer)[c];

    for(i = 0; i < 8; i++){
        bits[i] = (byte >> i) & mask;
        fprintf(bitWRT, "%d\n", bits[i]);
    }
}
fclose(bitWRT);
}

Merci,

-Sam

"Stocker ses bits"? Pouvez-vous nous montrer votre code où vous êtes la lecture de votre image jpeg et de l'écrire dans un fichier texte?
Sans voir ton code, nous ne pouvons pas vous dire ce que vous faites mal. Ma suggestion serait de comparer l'original du fichier d'entrée et le fichier de sortie, de découvrir d'où les différences de laïcs.
J'ai ajouté de l'extrait de code. output.JPG est une corruption de fichier image. Où en Suis-je arriver de mal.
Êtes-vous sûr que vous l'écriture de bits et pas de caractères ?
En fait vous êtes en train de rédiger 9 caractères de 8 bits (voir fwrite) et vous incrémenter c variable d'après vous le réglez à 0. En outre, vous lire en utilisant le nombre d'octets, mais même le caractère de nouvelle ligne(s) sont comptés comme des octets. C'est un peu bordélique...

OriginalL'auteur Sam | 2012-05-10