【发布时间】:2013-08-16 01:19:14
【问题描述】:
首先我想说我尝试了很多次通过谷歌搜索找到答案,我找到了很多结果但我不明白,因为我不知道读取二进制文件的想法,并转换值获得可读值。
我尝试过这样做。
unsigned char fbuff[16];
FILE *file;
file = fopen("C:\\loser.jpg", "rb");
if(file != NULL){
fseek(file, 0, SEEK_SET);
fread(fbuff, 1, 16, file);
printf("%d\n", fbuff[1]);
fclose(file);
}else{
printf("File does not exists.");
}
我想要一个简单的示例说明,如何从文件头获取 jpeg 文件的宽度/高度,然后将该值转换为可读值。
【问题讨论】:
-
您有 jpeg 文件中包含的内容的详细信息吗?如果有,请将其包含在您的问题中。我怀疑您的上述方法是否可行,因为开头通常有一个标题,然后实际像素值开始。如果您只需要高度和宽度信息,我相信您可以通过单独阅读标题来获得。
-
@mishr:我说的是一般意义上的
jpeg files。 -
我明白,但问题是你知道 jpeg 文件的格式是什么吗?还是您希望我们为您找到它?
-
@mishr:这是第一次处理二进制文件,比如jpeg,我对此一无所知。
-
看看这个fastgraph.com/help/jpeg_header_format.html。它表示标题分别包含偏移量 2 和 4 处的宽度和高度信息。您需要做的就是使用
fseek将fread指向这些偏移量,并从每个位置读取2 个字节。然后您需要将这些字节转换为整数。试一试。
标签: c jpeg binaryfiles