BMP 파일을 읽어오다가~~
글쓴이: dejavuh / 작성시간: 목, 2004/04/08 - 2:44오후
BMP 파일을 읽어서 파일의 정보를 보여주는 프로그램을 만들어 보려고 하고있씁니다.
일단 BITMAPFILEHEADER를 아래와 같이 MSDN에서 베껴다 놓았구요.
typedef struct tagBITMAPFILEHEADER {
short bfType;
int bfSize;
short bfReserved1;
short bfReserved2;
int bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
첫번째 질문 : 아무리 계산을 해보아도 데이터 크기가 14Byte인데 sizeof( ) 해보면 16 바이트가 나오네요. 뭐 이부분은 편법인지는 모르겠지만 다음 헤더를 읽을때 강제로 14바이트 뒤로 옵셋 이동시켜서 해결은 했습니다만.
두번째 질문 : 위의 데이터구조에서 첫번째 bfType은 제대로 읽어오는데, 그 다음것 부터는 2바이트씩 밀린 값을 읽어오네요. 예를 들어 bfSize의 값이 bfSzie 하위 두바이트 + bfReserved1의 데이터값을 읽어오는것 같습니다.
대략 4바이트 단위로 돌아가고 있는것 같은 느낌이 듭니다만, 깔끔하게 처리할 수 있는 방법이 있는지요 ???
감사합니다.
Forums:
컴파일러 옵션이나 #pragma 를 찾아보세요.
컴파일러 옵션이나 #pragma 를 찾아보세요.
sizeof( BITMAPINFOHEADER) 만큼 읽어서 바로 구조체에
sizeof( BITMAPINFOHEADER) 만큼 읽어서 바로 구조체에 쓰지 마시고..
자료들 하나하나를 읽어서 써주면 됩니다..
...
..
.
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
packed struct
:D http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/pragm_22.asp
:shock: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_.2f.zp.asp
머나먼 땅으로 우리 동무가 이제 떠나간다네.
고향의 바람이 불어와 동무 뒤를 따르고
사랑스러운 도시가 푸른 이내 속에서 사라지네.
정든 집, 푸른 동산, 부드러운 눈길도...
Re: BMP 파일을 읽어오다가~~
bmp 파일을 보면 라인이 항상 4byte 단위로 정렬됩니다. 그러니깐 끝에
padding으로 4byte를 맞춰주므로 이 부분의 처리가 필요합니다. 고운 하루되세요.
=========================
CharSyam ^^ --- 고운 하루
=========================
첫번째 답변 :packed attribute에 대해서 알아보시면 됩니
첫번째 답변 :
packed attribute에 대해서 알아보시면 됩니다.
제가 일일히 설명하기는 그렇고 packed attribute에 관한 질답은
널렸습니다. ^^
두번째 답변 :
역시 packed attribute에 관한 것같습니다.
덧.
위의 질문에는 없지만
바로 charsyam님이 설명하신대로 한 width를 4byte단위로 file에 쓰게 됩니다.
무슨말인고 하니,
풀어서 설명하겠습니다.
BitCount가 4이고 (4bit bitmap)
width가 17 이라고 치면
1 height당 4 * 17 = 68 bit -> 9byte를 쓰게 되겠지요.
하지만 1 height당 9byte가 쓰이는게 아니라 12byte, 즉 DWORD단위대로 쓰이게 됩니다.
그러므로 68bit를 읽은다음, 나머지 부분에 대한 처리를 해주어야 하지요.
도움이 되었기를 바랍니다.
Love actually is all around
[quote="germont"]첫번째 답변 :packed attrib
^^, germont 님이 제대로 설명하셨네요 ^^ 전, memory align 부분은 딴 분들이 설명하셔서 뒤에 문제될 부분만 적었는데 ^^ germont 님이 다 설명해 버리시네요 고운 하루
=========================
CharSyam ^^ --- 고운 하루
=========================
흠흠~ 항상 여기에 오면 쓸만한 답변을 얻어내는 군요.. 아니 쓸만
흠흠~ 항상 여기에 오면 쓸만한 답변을 얻어내는 군요.. 아니 쓸만한 답을 주시는 군요 ^^ 감사합니다.
댓글 달기