【发布时间】:2018-04-22 11:06:45
【问题描述】:
我的程序找到所有 50 张 jpg。但是,图像是“不完整的”。有些恢复了一半,有些不到四分之一,有些完全变灰了。当我打开一个 jpeg 时,它在打开时显示为灰色,在十六进制中它显示大部分是彩色像素,这是没有意义的。我已经尝试从各个角度寻找错误。
谁能帮我理解为什么我的图片被“损坏”了?
// 000.jpg
int j = 0;
// storing 000.jpg
char jpeg[8];
// buffer
unsigned char bf[512];
// FILE pointer
FILE *img = NULL;
// reading into memory card file
while(fread(bf, 512, 1, inptr) == 1)
{
if (bf[0] == 0xff && bf[1] == 0xd8 && bf[2] == 0xff && (bf[3] & 0xf0) == 0xe0)
{
sprintf(jpeg, "%03i.jpg", j);
img = fopen(jpeg, "w");
do
{
fwrite(bf, 512, 1, img);
fread(bf, 512, 1, inptr);
}
while(bf[0] != 0xff && bf[1] != 0xd8 && bf[2] != 0xff && (bf[3] & 0xf0) != 0xe0);
fclose(img);
j++;
// fread is going to read it again
fseek(inptr, -512, SEEK_CUR);
}
}
fclose(inptr);
return 0;
}
【问题讨论】: