상세 컨텐츠

본문 제목

visual stdio C Language(Bitmap)

설계공부/C언어(C++)

by 썽심 2023. 11. 10. 18:51

본문

728x90

2023.11.10

사용툴 : visual stdio 2019

 

BMP Generator을 활용하여,

Color bar를 생성한 뒤 gray scale로 변경했다.

 

bmpGenerator_data_sheet

R,G,B  각각 8 BIT

Color Table 사용 안함

각 픽셀 3byte R, G, B를 넣어준다.

실제 픽셀 DATA가 *Raster Data(C언어 파일 참고)

 

구조체를 이용한 구조 변수 선언

 

 

 

InfoHeader 선언

bitmap_spec을 보고 구조체로 생성, 구조체 형식의 data type을 새로 만들었다.

 

 

 

Bmp_Header_Sig

2Byte

 

 

Bmp_Header

12Byte

 

 

InfoHeader

40Byte

 

 

PinfoHD

= 4byte

 

 

 

 

쓰레기 값을 없애주는 방법

1. 필드별로 0을 입력(변수값에 값을 직접 입력)

2. Pointer를 통해 초기화

3. Memset(초기화 함수)사용

 

 

1. 필드별로 0을 입력(변수값에 값을 직접 입력)

 

2. Pointer

 

B에서 8bit shift 해주는 이유

순서가 뒤바뀌어 들어가기 때문에 

 

Raster Data : 규칙척인 픽셀 크기를 가진 격자형 데이터

 

시프트 없이 코딩시 결과

 

 

 

 

3.  Memset(초기화 함수)사용

memset(초기화할 주소, 초기화할 값, 얼마만큼 쓸 것인가)

 

 

HxD로 확인해본 결과 Offset의 크기가 E 1036으로 나왔다.

00 01 바이트는 B,M

 

Signature : BM (42 4D)

size : 00 0E 10 36

reserve : 00 00 00 00

offset : 00 00 00 36

infoHeader.Size = 00 00 00 28 (10진수 40)

infoHeader.Width = 80 02 00 00 (10진수 640)

infoHeader.Height = E0 01 00 00 (10진수 480)

infoHeader.Planes = 00 01(10진수 1)

 

 

 

 

 

3중 배열을 통한 색 배열 파일 생성

 

 

HORIZONTAL을 추가하여 만든 bmp_generator로 생성한 EBU 컬러바 

img size : 640 x 480

 

 

 

 

 

 

EBU 컬러바를 grayscale로 변경한 모습

grey = 0.3 * r + 0.59 * g + 0.11 * b;

728x90

관련글 더보기