CS 50 Pset4-恢复,生成模糊或像素化的图像

时间:2020-05-07 05:41:23

标签: c cs50 recovery

我已经在此代码上停留了一段时间,现在终于可以生成所有图像了,但是这些图像是像素化的,而且是不正确的。我在网上看到了为什么会发生这种情况并更改了我的代码,但这根本无济于事。

我收到来自check50的以下消息

:) recovery.c存在。

:) recovery.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;

}

请提出错误或代码更改

0 个答案:

没有答案