비트맵의 종류 DDB, DIB (비트맵 분석 #2)

윤찬호·2022년 3월 1일
0

이미지포맷

목록 보기
2/11

1. 비트맵 종류

윈도우즈가 지원하는 비트맵 포맷은 DDB와 DIB가 있다.

1-1. DDB (Device Dependent Bitmap)

DDB는 장치(출력장치, 모니터)에 종속적인 비트맵 이미지이다.
출력 장치에 많이 의존되며 만들어진 장치 외의 다른 장치에서 제대로 출력되지 못하는 경우가 있다.

GDI에서 비트맵 출력을 위해서는 DDB가 필요하며 장치(DC)에 종속되는 비트맵으로 색상, 크기 등의 이미지 정보가 DC를 따라가며 DC와 호환이 되어야만 정상적으로 그림이 출력된다.

따라서 다양한 해상도의 장치에 광범위하게 사용되지 못한다.
흑백 비트맵(1bit)은 흑백 장치로만 출력, 컬러 비트맵은 컬러 장치에만 출력할 수 있다.

1-2. DIB (Device Independent Bitmap)

DIB는 장치에 종속되지 않는 독립적인 비트맵으로 어디에서나 원래 모양대로 출력될 수 있다.

BMP파일 헤더에 그림에 대한 모든 정보(색상 테이블, 해상도, ...)가 들어있기 때문에 BMP파일 자체만으로 이미지를 출력할 수 있다.

이미지를 파일로 저장하기 위해서는 독립적인 DIB로 저장이 되어야 하며, 이를 윈도우에서 GDI를 통해서 화면에 출력 하려면 DDB로 변환을 해야한다.

DDB에 비해 활용도가 훨씬 더 광범위하고 호환성이 뛰어나다. (컬러 비트맵을 흑백 프린터로 출력할 수도 있고 색상 수가 조금 다른 장치로도 출력할 수 있다.)

현재 화면 설정이 픽셀을 8비트로 표현하도록 설정되어 있으면 DDB(장치 의존 비트맵)도 픽셀 당 8비트로 표현하고

현재 화면 설정이 픽셀을 16비트로 표현하도록 설정되어 있으면 DDB(장치 의존 비트맵)도 픽셀 당 16비트로 표현한다.

DIB(장치 독립 비트맵)은 출력 장치가 달라지더라도 자신의 색상을 표현하는 색상 테이블을 가지고 있기 때문에
어디에서나 자신의 비트맵이 제대로 출력되도록 할 수 있다.

1-3. DDB의 필요성

DDB보다 DIB의 사용이 훨씬 더 유리하지만 아래와 같은 이유로 여전히 DDB는 필요하다.

  1. 하위 호환성을 위해 Win32는 여전히 DDB를 지원한다.

    윈도우 프로그래밍의 특징
    장치에 영향을 받지 않는다. 출력대상만 결정하면 프린터와 모니터에 상관없이 동일한 출력물을 얻어낼 수 있다.

  2. DC에 선택될 수 있는 비트맵은 오직 DDB이다.
    DC의 색상 포맷이 고정되어 있으므로 DIB는 직접 DC에 선택될 수 없으며 DDB로 변환해야 출력할 수 있다.

  3. 프로그램 내부에서 만들어지고 파괴되는 비트맵은 DDB가 훨씬 더 효율적이다.
    DIB는 많은 기능을 가지고 있지만 그만큼 복잡하기 떄문에 내부적이고 임시적인 사용에 적합하지 않다.

0개의 댓글