bmp파일구성 Image Processing

매번 기억나지도 않는데다가... 매번 검색하기도 짜증나고 해서
여기다 적어놓습니다...

BMP 24bits파일 정보입니다.
아래는 16진수로 보이는 에디터로 bmp파일을 열었을때입니다.


2bytes signature : 예약어로 BM입니다. 반드시 4D42 이어야합니다.
4bytes size fo bmp : 전체 파일 사이즈입니다. 000125D8
2bytes reserved : 예약어로 반드시 0000이어야합니다.
2bytes reserved : 예약어로 반드시 0000이어야합니다.
4bytes offset of image data : 실제 이미지 데이터가 시작되는 곳을 가르킵니다. 현재 00000036입니다.
4bytes size of BITMAPINFOHEADER structure : 구조체사이즈로 반드시 00000028이어야 합니다.
4bytes pixels of image width : 이미지 가로 픽셀 크기입니다. 현재 0000015C
4bytes pixels of image height : 이미지 세로 픽셀 크기입니다. 현재 00000048
2bytes number of planes : 이미지 플랜 개수인데 bmp는 반드시 0001입니다.
2bytes number of bits per pixel : BPP로 현재 24bits이므로 0018입니다.
4bytes compression type : 압축타입으로 현재 압축된 파일이 아니므로 0입니다. 1=RLE-8, 2=RLE-4
4bytes size of image data : padding을 포함한 전체 이미지 데이터의 bytes수입니다.000125A2
4bytes horizontal pixels per meter : 픽셀당 미터인데 실제로 일치하는 수는 아닙니다. 출력 기기에 따라 미터수는 다르게 나오겠죠.
4bytes vertical pixels per meter : 픽셀당 미터인데 실제로 일치하는 수는 아닙니다.
4bytes number of colors : 8비트이하 색상팔레트를 가질경우 색상수입니다. 현재 24비트이므로 0
4bytes number of important color : 사실 위의 색상수와 뭐가 다른지 모르겠네요. 현재 24비트이므로 0
그리고 현재 위치 0036 부터 실제 이미지 데이터가 들어갑니다. 209020은 BGR값으로 일반적으로 투명색으로 사용하는 녹색값입니다.

중요한 값들은 이미지 데이터 offset값과 BPP, width, height입니다.

24비트 이미지는 이미지 데이터가 BB GG RR로 들어갑니다. width*height만큼이 되겠지요.
width * height * BPP = 348 * 72 * 3 = 75168입니다.
이미지 데이터는 000125A2로 75170이지요.
맨 마지막 00 00 두바이트가 붙었는데 비트맵은 4바이트 단위로 끊어집니다.
4바이트로 안끊어지면 쓰레기값을 집어넣어서 강제로 4바이트로 떨어지게 해주는데 이게 padding입니다.
전체 파일사이즈가 000125D8으로 75224입니다. 4로 나누면 딱 떨어지지요.

16비트 이미지는 데이터가 RGB565로 16비트씩 들어갑니다.
8비트 이하는 색상수에 따라 이미지 팔레트가 헤더뒤에 나오고 실제 이미지 데이터는 팔레트 인덱스로 구성됩니다.
32비트 이미지는 데이터가 bb gg rr 00 으로 4바이트씩 들어갑니다.
8비트 이하 이미지 팔레트의 색상값도 bb gg rr 00 4바이트로 구성됩니다.


덧글

댓글 입력 영역