|
네 감사합니다.
말씀하신대로, BMP 파일 특성상 상하가 거꾸로 저장되고
그래서 Header 만들때 bi->biHeight = cy; 를 -cy 값을 넣어 주면 해결 됩니다.
그리고, 4의 배수도 r,g,b,reserved로 인하여 가로를 4byte 맞추어야 합니다.
태윤님이 답변하신대로,
header만 원래 가로 size를 주고
데이터는 4의 배수를 맞추어야 할듯 합니다 ~
전 header도 4의 배수를 맞추었던게 문제 였던거 같습니다. ^^;
데이터를 4의 배수로 맞추는 부가적인 작업은 필요 할듯 합니다.
답변 감사드립니다.
방태윤 님이 쓰신 글 :
: 흠...전 이론은 약하고 대부분 경험담을..ㅋㅋ
: dos 시절 그래픽 뷰어 만들때.. bmp 포멧은
: 데이터가 압축이 안되있어서 거져먹기로 작업을 햇었는데...
: 특이한 사항는 데이터가 밑에서 위로 향하는 배열이고...
: xsize 가 4의 배수 이던가를 요구하는게 특이 했었다는 기억이 나네요.
: 포멧헤더에 x 사이즈가 99 이더라도 데이터를 뿌릴때는
: 100 이렇게 4의 배수로 만들어서 뿌려야 된다는거죠?
: 즉 포멧헤더에 사이즈는 99 라고 해놓고는
: 이미 데이터 자체는 100 으로 채워져 있다는 말씀입니다.(아마.하도 오래전 일이라..ㅋㅋ)
: 그게 bmp 포멧의 규칙인 모양입니다.
:
: 그러므로 님의 경우도 raw 데이더를 bmp포멧으로 뿌리실려면
: 이미 하신 방법처럼 데이터를 조작하는게 맞는 방법이라고 생각합니다.
:
: bmp 의 포멧을 찾아보시면 확실히 아실수 있을겁니다.그럼...
:
:
: 하얀향기 님이 쓰신 글 :
: : 안녕하세요.
: :
: : TImage를 가지고 raw 영상 데이터를 DIB로 화면에 뿌릴려고 합니다.
: :
: : 만약 raw 영상 데이터의 가로 size가
: : 4byte align(표현이 맞는지 모르겠습니다 ㅠㅠ)이 맞는 영상은 깨짐 없이 잘 뿌려지나,
: : 4byte align이 맞지않는 영상은 영상이 깨져서 뿌려집니다.
: :
: : 위와 같이 깨질때, 아래 같은 방법으로 대처 했습니다.
: : 1. raw 영상을 interpolation 해주어서 4byte align 으로 맞춤
: : 2. raw 영상을 "0"로 padding 하여 4byte align 으로 맞춤
: :
: : 그러나, 위의 2가지 방법은 raw 데이터를 조작하게 되므로 좋은 방법이 아닌듯 싶은데,
: : 프로그램밍 적으로 이미지를 뿌릴때 4byte align 이 맞는 않는 raw데이터를 건드리지 않고,
: : 깔끔하게 뿌리는 방법을 찾고 있습니다.
: :
: : 이문제에 대해 겪어 보신분이나 알고 계신분은 답변 부탁드립니다.
: : (일일이 pixel 단위로 찍는 것은 뿌리는 속도 문제가 있을 듯 하구요)
: :
: : 참고로, raw 데이터 영상의 가로 size는 랜덤 합니다 ^^;
: :
: : 그럼 좋은 하루 보내세요.
|