|
화면의 영상을 캡쳐해서 bmp 파일로 저장을 하려고 합니다.
비트맵의 헤더를 만들기 위해 비트맵헤더 구조체를 이용했는데 저장된 이미지가 계속 잘못된 이미지라고 하면서 그림판 등에서 열리지 않아서 비트맵 이미지의 데이타를 HEX 로 분석을 해 보았더니 문제점이 있더군요..
첫번째 구조체의 크기에 대한 에러 입니다.
int value ;
BITMAPFILEHEADER bmphdr ;
value = sizeof(bmphdr) ;
위에 구문을 실행하면 value에 16이 저장 됩니다. 실제 BITMAPFILEHEADER 의 크기는 14바이트 입니다.
두번째 위의 구조체 크기의 문제가 실제 데이타에도 영향을 미칩니다.
저장된 이미지를 Hex로 열어보니
BM NUL NUL
42,43,00,00
처음 4바이트에서 BM 뒤에 2바이트 NULL 이 들어가 있습니다.
데이타를 저장하는 것은 WriteFile(fh, &bmphdr, sizeof(bmphdr), &nWritten, NULL); 이렇게 했습니다.
저 2바이트는 도데체 어디서 온 것일까요??
빌더 6.0 , windows7 32bits 에서 테스트 했습니다.
궁금하네요..
|