jam 블로그

[File Format] BMP File Format 본문

해킹/기타

[File Format] BMP File Format

kid1412 2010. 1. 19. 23:23
728x90
BMP File Format (Window)

BMP 확장자를 가진 그림 파일 헤더의 특징은 다음과 같습니다. 총 54byte를 가집니다. (참고로 hex는 순서 바뀌어서 들어갑니다. 예를 들어 BMP 처음에 4D 42가 들어가야 합니다. 파일을 hex로 열어보면 42 4D로 들어가 있습니다. 뒤에서부터 들어간다고 보시면 됩니다. 4개일 경우 12 34 56 78 => 78 56 34 12가 정상입니다.)

offset

size

description

0

2

항상 4D42

2

4

BMP 파일 크기(byte)

6

2

항상 0

8

2

항상 0

10

4

이미지 데이터가 시작하는 offset

14

4

BITMAPINFOHEADER structure의 크기, 항상 40(10진수)

18

4

이미지 가로 픽셀 수

22

4

이미지 세로 픽셀 수

26

2

number of planes in the image, 항상 1

28

2

1픽셀당 비트수 (2 ,4, 8, 24 (10진수))

30

4

compression type (0=none, 1=RLE-8, 2=RLE-4)

34

4

size of image data in bytes (including padding)

38

4

horizontal resolution in pixels per meter (unreliable)

42

4

vertical resolution in pixels per meter (unreliable)

46

4

number of colors in image, or zero

50

4

number of important colors, or zero


42 4D 36 C0 00 00 00 00 00 00 36 00 00 00 28 00 00 00 80 00 00 00 80 00 00 00 01 00 18 00 00 00 00 00 00 C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
첫 번째 4D 42가 들어가야만 BMP를 뜻합니다.
두 번째 36 C0 00 00 이런식으로 들어가 있는데 계산 방법은 00 00 C0 36을 공학용 계산기로 넣어서 10진수로 바꿉니다. 00 00 C0 36 => 49206(byte) => /1024 => 48Kb 가 나옵니다.
세 번째, 네 번째는 무조건 0
다섯 번째 36 00 00 00 은 이미지에 대한 데이터가 시작하는 offset을 뜻합니다. 00 00 00 36으로 이동해 보시면 데이터가 시작하는 것을 볼 수 있습니다.
여섯 번째 BITMAPINFOHEADER structure의 크기를 뜻하며, 항상 40이므로 00 00 00 28이 들어가면 됩니다.(순서는 역순)
일곱 번째, 여덟 번째는 이미지의 사이즈입니다. 가로, 세로이며 둘다 계산을 해보면 128임을 알 수 있습니다.
열 번째 hex인 픽셀당 bits 수 까지만 알아두시면 됩니다. 나머지는 대부분 건들지 않습니다.


Comments