CS 50 Pset4 - Восстановление, создание размытых или пиксельных изображений - PullRequest
0 голосов
/ 07 мая 2020

Я застрял в этом коде некоторое время, и я, наконец, могу сгенерировать все изображения, но изображения пиксельные и некорректные. Я видел в Интернете, почему это может произойти, и изменил свой код, но это мне совсем не помогает.

Я получаю следующие сообщения от check50

:) recovery. c существует.

:) восстановление. c компилируется.

:) обрабатывает отсутствие forensi c изображение

:( восстанавливает 000.jpg правильно восстановленное изображение не соответствует

:( восстанавливает средние изображения правильно восстановленное изображение не соответствует

:( восстанавливает 049.jpg правильно восстановленное изображение не соответствует

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//#include <stdint.h>
typedef unsigned char BYTE;

int main(int argc, char *argv[])
{
    if (argc!=2)
    {
        printf("Usage: ./recover image");
        return 1;
    }

    FILE *file = fopen(argv[1],"r");
    if(file ==NULL)
    {
        printf("cannot be opened");
        return 1;
    }

    //for (   ) //here we read till it reaches end of file i.e able to read 512 bytes and not less



    BYTE bytes[512]; // defining buffer
    char filename[8];
    int count = -1;
    FILE *img = NULL;
    //bool flag = false;
    bool new_file = false;

    while ((fread(bytes,512,1,file))==1)
    {
        if((bytes[0] == 0xff) &&(bytes[1] == 0xd8) && (bytes[2] == 0xff) && ((bytes[3] & 0xf0) == 0xe0))
    {
        new_file = true;


        count++;
        sprintf(filename,"%03i.jpg",count);
        img = fopen(filename,"w");
        fwrite(bytes,512,1,img);
        fclose(img);




        if (new_file == false)
        {
           img = fopen(filename,"a");
           fwrite(bytes,512,1,img);
           fclose(img);


        }


    }    
}

fclose(file);
//fclose(img);
return 0;

}

Пожалуйста, предложите ошибки или изменения в код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...