|
제가 아는 범위내에서만 말씀드리면요..
우선, BMP 파일 컬러를 뽑아내실 때, 가장 손쉬운 방법은 Image로 로딩 하신 다음에 Canvas의 Pixels 프로퍼티를 이용하거나, Scanline등을 이용해서 컬러를 읽어내는 방식입니다. 이렇게 하면 간편하게 뽑아올 수 있습니다.
만약, 바이너리 BMP 파일을 직접 읽어오고 싶으시다면, BMP 파일을 분석해서 읽어오는 방법도 있습니다. 물론, 헤더 파일 정보와 기타 등등을 읽어오면 더 효율적이 겠지만, 실질적으로 BMP 파일의 형식은 그리 어렵지 않기 때문에, HEX 에디터로 BMP 파일을 열어서, 위치만 정확히 알아둔다음 읽어온다면 그리 어렵지 않게 구현하실 수 있습니다. 데이터 시작 위치나 Width, Height 이 있는 자리는 파일의 상단 위치에서 변화지 않기 때문입니다. (Hex 에디터가 지금 없어서 정확한 위치를 못알려드리겠네요. 꾸벅)
데이터 시작 부분부터 왼쪽 맨 아래 부분으로 기준을 잡은다음, 왼쪽부터 오른쪽으로 점의 컬러가 나오고, 그 다음 그 윗줄의 왼쪽부터 시작되는 식으로, 이런식으로 맨 위쪽의 오른쪽까지 컬러가 분포되어 있습니다.
Pixels 하나에 2 Bytes 라는 것은, 몇 컬러에 따라서 틀려지는 문제입니다. 2 Bytes 는 16Bit 컬러로 저장했을때 나오는 결과입니다. 256 같은 경우 1 Byte 로 만들어지고 대신 팔레트 정보가 추가됩니다. 32Bit는 3 Bytes가 되겠구요.
그리고 Bmp 데이터는 픽셀의 크기가 짝수냐 홀수냐에 따라서 조금씩 차이가 있습니다. 한 가로줄이 끝날때마다 Empty Data의 여부입니다.
BMP 파일 하나를 한 색으로 다 칠해두신다음, Hex Editor로 읽어오신다음 분석을 하시는 것이 좋으실것 같습니다.
utime 님이 쓰신 글 :
: 안녕하세요~
: 시간한줌입니다.참~ 요즘 아뒤를 걍 utime으로 바꿨습니다~ 하하핫~
:
: 각설하고 질문 들어갑니다.
:
: Bitmap파일의 우선 BITMAPFILEHEADER과 BITMAPINFOHEADER을 읽었습니다.
:
: 쩝.. 근데 더이상 진도가 안나가네요~ ㅡㅡㅋ
:
: 원췌 Bitmap구조를 잘몰라서요~
:
: bfOffBits의 위치가 실제 데이타가 들어있는 값이라는건 알았는데 그다음 어떻게 읽어야 하죠~?
:
: 이 이미지가 몇 비트이미지인지, 한 픽셀씩 읽어 RGB값을 알아내려면 어떻게 해야 할까요?
:
: 참~ RGB값이 2바이트라고 하는데 맞나요?
:
: 알쿼주소서~!!!
:
:
:
: ps.~
: 스페로님~
: 얼핏 기억에 회사에 이미지프로세싱 잘하시는 분 있다고 들었는데 그분의 도움을 받을 순 없을까요?
|