bmp 파일에서 데이터를 추출하는 간단한 프로그램을 작성했습니다. 나는 지금 막 시작했고 나는 그 WTF 순간 중 하나에있다. 나는이 프로그램을 실행하고이 이미지를 제공 할 때c BMP에서 데이터 가져 오기
는 : 실제 이미지 크기는 786,486 바이트입니다
type: 19778
size: 12
res1: 0
res2: 54
offset: 2621440
: http://www.hack4fun.org/h4f/sites/default/files/bindump/lena.bmp
을 나는 출력을 얻을. 내 코드가 12 바이트를보고하는 이유는 무엇입니까?
http://en.wikipedia.org/wiki/BMP_file_format에 지정된 헤더 형식이 내 BMP_FILE_HEADER 구조와 일치합니다. 그렇다면 잘못된 정보로 왜 채워지고 있습니까?
이미지 파일이 손상되지 않은 것 같고 다른 이미지도 똑같이 잘못된 출력을 제공합니다. 내가 뭘 놓치고 있니? 여기
#include <stdio.h>
#include <stdlib.h>
typedef struct {
unsigned short type;
unsigned int size;
unsigned short res1;
unsigned short res2;
unsigned int offset;
} BMP_FILE_HEADER;
int main (int args, char ** argv) {
char *file_name = argv[1];
FILE *fp = fopen(file_name, "rb");
BMP_FILE_HEADER file_header;
fread(&file_header, sizeof(BMP_FILE_HEADER), 1, fp);
if (file_header.type != 'MB') {
printf("ERROR: not a .bmp");
return 1;
}
printf("type: %i\nsize: %i\nres1: %i\nres2: %i\noffset: %i\n", file_header.type, file_header.size, file_header.res1, file_header.res2, file_header.offset);
fclose(fp);
return 0;
}
'BMP_FILE_HEADER'이 (가) packof되어 있는지 확인하십시오. sizeof (BMP_FILE_HEADER) == 14 – Musa
@ Musa 16입니다. 고마워요, 지금 제가 할 일이 있습니다. –