Blog | Tag | Local | Guest | Login | Write |  RSS


 이번 포스팅부터 뒤에 몇몇 포스팅은 비트맵장치에 대해 다룰 예정입니다.

 비트맵이미지가 처음 소개된 곳은 의외라고 생각하 실진 모르겠지만 마이크로소프트가 윈도우를 제공하며
 처음 소개한 방식입니다. 아무래도 GUI형식의 os를 만들면서 화면에 출력되는 영상을 일일히 함수를 통하여
 그리는 것 보다  이미 그려진 그림을 뿌려주는 것이 속도면에서 훨씬 효율적이기에 개발된 포멧이 아닐까 싶습니다.
 
 비트맵은 말 그대로 Bit와 Map의 조화로 그림을 구성하는 픽셀정보가 2차원으로 저장되어 있습니다.
 (2차원배열) 그래서 비트맵이미지는 픽셀색상 , 이미지의 크기와 위치 해상도 정보를 헤더로 가지고있습니다.

 길게 한개에 몰아쓰는것보다 짧고 굵게 다루는것이 집중력과, 검색능률에 좋을듷하기도하궁,,
 헤더에 대한 정보는 다음 포스팅에 쓰기로하고
 어쩃든 이번시간에는 두가지 종류의 비트맵 DDB와 DIB의 차이에 대해서 다루도록할 생각입니다 오홍홍 ㅋ


 DDB ( Device Dependent Bitmap) 디바이스에 종속적인 비트맵


다음 그림은 window vista의 display setting과 관련된 메뉴의 캡쳐입니다. 

여기서 확인하셔야 하는것은 빨간 네모칸의 color부분,
비스타에서는 32bit의 Highest와 16bit  medium 두가지 설정이 있습니다. (xp는 조금 더 다양한 선택권이있는걸로 압니다.;;)

여기서 설정되는 color는 표현가능한 컬러의 수가 얼마나 되는가를 이야기 해 주는 것인데,, 
예를들어  16bit의 Medium을 선택하였다면,,
 216 = 65,536개의 색을 표현가능하다는 의미입니다.

DDB는 디바이스에 종속적인 비트맵으로 다시말하면 화면설정에 종속적인,, 화면설정에 따라서 표현이 달리되는 비트맵 이미지를 의미합니다.


예를 들어 a라는 그림이 32bit의 color설정이 되어있는 컴퓨터에서는 32bit의 그림으로 출력되고 
16bit의 color로 설정되어 있는 컴퓨터에서는 16bit의 그림으로 출력됩니다.
극단적으로 말씀드리면 , 흑백으로 설정되어있는 컴퓨터에서는 그림이 컬러이든 흑백이든 무조건 흑백으로 출력되고,
(그 그림은 컬러설정이 되어잇는 컴퓨터에서는 컬러로 보입니다)
컬러로 설정되어 있는 컴퓨터라면 그림이 흑백이든 컬러든 컬러로 출력된다는 의미입니다.
(그 그림은 흑백설정이 되어있는 컴퓨터에서는 흑백으로 보입니다.)

뭔가 의미가 이상하게 전달될 수도 있다 생각되는 이상한 의미긴하지만,, (그럴수밖에요,,이걸접할기회가적으니까요)
말 그대로 장치설정대로 출력되는 비트맵을 의미합니다.

이 비트맵은 bitmap을 출력하는데 필요한 모든정보를 header에 가지고 있지 않고
출력되는 컴퓨터 시스템의 디스플레이장치가가지고있는 부가적인 정보(팔레트, 픽셀포맷등)를 이용하여 출력하기 때문에
다른 종류의 디스플레이 장치에서는정확하게출력되지않는단점이 있습니다.
다만 장치의 정보와 일치하는 정보로 이미지를 출력하기 때문에 빠른속도로 이미지를 출력할 수 있는 장점이 있습니다.

이해가 안가신다면 개발자의 입장이 아니시라면,, 구지 이해하시려고 노력하실 필요 없습니다. 잘안쓰니까요-_-;;;
(앗 나만이해가 안갔던것인가-_-;;;;)


요약 - 화면설정에 종속적인 컬러표현


 DIB (Device Independedt Bitmap) 디바이스에 독립적인 비트맵

위와는 상대적인 개념으로 DIB는 화면설정이 32bit이든 16bit이든 상관없이, 나는 나나름대로 색을 표현할꺼야!!! 하는 비트맵이미지입니다. 우리가 쓰는 이미지들의 대부분은 DIB형식의 파일입니다.
이가 가능한 것은 Bitmap헤더에 bitmap을 출력하는데 필요한 모든 정보를 가지고 있기 때문에 가능합니다.
그래서, DDB와 반대로 어떠한 설정을 가진 장치에서 이미지를 출력하여 보더라도 동일한 이미지정보를 확인할 수있습니다.
즉 흑백이미지는 어느컴퓨터에서 보든 흑백이미지이고, 컬러이미지는 어느컴퓨터에서 보든 컬러라는 것입니다..

다만, DDB의 장점이였던 속도 문제가 여기서는 단점으로 꼽힐수있습니다.
만약 , 디스플레이 설정이 장치 독립적 비트맵의구성과 다르다면 적절한 픽셀 포맷의변환작업이 필요하고
팔레트에해당하는색상을 매핑시켜야하는 부담이 있어, 비트맵의 출력 속도가 떨어질수있는 단점이 있습니다.

하지만 하드웨어기술의 발달로 이정도 속도문제는 큰 문제가 되지 않아 DIB를 주로 사용하고 있습니다.

요약  - 화면설정에 독립적인 컬러표현,
        - 흑백영상은 시스템 설정이나 장치에 무관하게 흑백으로 나타나고 컬러영상은 항상 컬러로 나타남



 DIB가 최신의 기술이고 DIB를 많이 사용하고 있다고 하더라도,, DDB를 버려서는 안됩니다.

 1. 일단 속도면에서 DIB보다 DDB가 빠를 수 밖에 없습니다. 이게 아니더라도
 2. 결국은 DDB이기 때문입니다.   (디바이스 컨텍스트(Device Context)에 선택될 수있는비트맵은D D B뿐)
    즉, 결국은 디바이스에 종속되서 그림을 뿌려줘야하지 않겠습니까??
 3. 뿐만 아니라 프로그램내부에서의 생성과 파괴작업도 DDB가훨씬 효율적입니다.

 결국은 개발자라면 DIB와 DDB의 특징을 알아야 하며  서로 상호 변환할 줄도 알아야 한다고 생각합니다.
 


이번 포스팅에서는 간단히 DDB와 DIB에 대해서 다뤘습니다.
뭐 주저리 주저리 이래야한다 저래야한다 잔뜩말하긴했지만.. 그냥 이것이 무엇인가 하는 개념만 알고가시면 될 거같습니다.
DDB에 대해 설명이 아리까리해서 이상하다고 느껴져 골치아프시다면,,, 그냥 이해안하셔두됩니다 ㅋ
아까말씀드린것처럼 평소에 보지못했기 때문에 잘 이해가 안가는 것일수도 있으니까요~~

 다음 포스팅에서는 비트맵 포멧의 구조에 대해 다루겠습니다.