2010-12-05 5 views
1

비트 맵을 사용하는 코드를 작성해야합니다. 내가 시작하게하는 주제에 대한 좋은 소개가 있는가?비트 맵에 대한 유용한 정보는 어디에서 찾을 수 있습니까?

+1

이 질문은 프로그래밍과 관련이 있습니까? –

+1

질문을 분명히해야합니다. 알고 싶은 것이 있습니까? 압축? 파일 형식? – ThiefMaster

+0

나는 그렇게 생각한다. 제 대답은 비트 맵을 조작하는 프로그램을 처음 시작할 때 배워야 할 모든 기본 사항입니다. 나는 대부분의 게임 프로그래머가 동의 할 것이라고 생각한다. –

답변

4

원래는 What every developer should know about bitmaps (사진과 함께 더 잘 포맷 됨)에 게시되었습니다.

사실상 모든 개발자는 프로그래밍 할 때 비트 맵을 사용합니다. 또는 프로그래밍이 아니라면 웹 사이트, 블로그 또는 가족 사진에서. 그러나 우리 중 많은 사람들은 GIF, JPEG 또는 PNG 파일 간의 절충을 모릅니다. 거기에는 몇 가지 중요한 차이점이 있습니다. 이것은 대부분의 경우 충분할 기초에 대한 짧은 글이며 나머지는 좋은 시작입니다. 이것들의 대부분은 게임 개발자 (inc. Enemy Nations)로서 당신은 그래픽에 대한 깊은 이해가 필요합니다.

비트 맵은 기본적으로 각 픽셀의 색상을 저장합니다. 그러나 여기에는 세 가지 주요 구성 요소가 있습니다.

  1. 색상 값 자체 저장. 우리 대부분 은 RGB에 익숙합니다. 은 각 색상의 빨간색, 녹색, & 파란색구성 요소를 저장합니다. 이것은 실제로 사람의 눈으로 볼 수있는 가장 효과적인 방법입니다 색상 스펙트럼의 일부에 차이가 다른 사람보다. 과 같이 색상을 많이 사용하는 경우에는 의 공통 작업이 비효율적입니다. 하지만 은 가장 일반적인 프로그래밍 작업이므로 표준이므로 표준이되었습니다.
  2. 각 픽셀의 투명도는 입니다. 비 직사각형 이미지의 가장자리 인 에 중요합니다. A 대각선은 최상의 렌더링을 위해 의 색을 의 색과 기본 픽셀의 색으로 조합 한 것입니다. 각 화소는 (쇼 께 화상으로부터 만 화소)를 100 % (기본 화소 표시) 0 %로 설정 투명성 (또는 실제로 불투명)의 해당 레벨이 필요하다.
  3. 비트 맵 메타 데이터입니다. 이 은 이미지가 이미지의 색상 표와 해상도에서 다양 할 수있는 이미지에 관한 정보입니다.

압축

비트 맵 데이터를 많이 걸릴. 또는 더 정확히 말하자면, 그들은 많은 바이트를 차지할 수 있습니다. 압축은 지난 몇 년간 새로운 비트 맵 형식의 주요 동력이되었습니다. 압축은 팔레트 감소, 손실 & 무손실의 세 가지 맛이 있습니다.

초기에는 팔레트 감소가 가장 일반적인 방법이었습니다. 일부 프로그램은 검정색 & 비트 맵을 사용하므로 픽셀 당 1 비트입니다. 이제는 그것을 짜내고 있습니다. 그리고 Windows 3.1 시대에 16 색 이미지 (4 비트/픽셀)가 널리 사용되었습니다. 그러나 주요 사용은 비트 맵의 ​​경우 8 비트/256 색의 경우입니다. 이 256 색은 비트 맵의 ​​일부인 팔레트에 매핑되며 팔레트는 각 항목에 대해 24 비트 색을 유지합니다. 이렇게하면 프로그램이 그림을 가장 잘 보여주는 전체 스펙트럼에서 256 가지 색상을 선택할 수 있습니다.

이 접근법은 꽤 좋았으며 표면을 가로 질러 매우 천천히 전환하는 평평한 표면에서는 대부분 실패했습니다. 또한 비디오 카드는 전체 화면에 대해 단일 팔레트가있는 8 비트 시스템이기 때문에 웹 및 창 운영 체제에서 중요한 문제를 조기에 발견했습니다. 화면 전체를 소유 한 게임에서는 괜찮 았지만 다른 출처의 이미지가 화면을 공유 한 경우에는 그렇지 않았습니다. 이것에 대한 해결책은 표준 웹 팔레트가 만들어졌고 팔레트 경합이 있었다면 대부분의 브라우저 등은 팔레트를 사용했습니다.

마지막으로 16 비트/픽셀과 같은 몇 가지 중간 솔루션이 있지만 전체 스펙트럼을 제공하지만 인간의 눈이 그늘 변화에서 점프를 볼 수있는 거친 수준의 세분성이 있습니다. 메모리 가격이 하락하고 비디오 카드가 8 비트에서 24 비트로 빠르게 증가했기 때문에이 방법은 거의 사용되지 않았습니다.

다음은 손실 압축입니다. 압축은 파일에서 반복되는 패턴을 찾은 다음 두 번째 경우에는 첫 번째 실행을 가리 킵니다. 두 번째 실행의 유일한 차이점은 두 개의 픽셀이 1의 값만큼 더 빨갛게되는 20 픽셀의 런이있는 경우 어떻게됩니까? 인간의 눈은 그 차이를 볼 수 없습니다. 따라서 두 번째 실행을 첫 번째 실행과 일치하도록 변경하면 압축 할 수 있습니다. 대부분의 손실 압축 구성표를 사용하면 손실 정도를 설정할 수 있습니다.

단일 색상을 사용하여 투명도를 지정할 때이 접근법에는 심각한 문제가 하나 있습니다. 색상이 한 비트 씩 이동하면 더 이상 투명하지 않습니다. 이것이 손실 형식이 거의 독점적으로 사진에만 사용되고 게임에서는 사용되지 않는 이유입니다.

마지막으로 손실이 발생합니다. 이것은 프로그램이 정보의 손실없이 이미지에서 코딱지를 압축하는 곳입니다. 나는 이미지를 압축하는 것이 압축 해제하는 것보다 훨씬 더 많은 시간이 걸린다는 점을 제외하고는 무엇을/어떻게 해야할지는 생각하지 않습니다. 압축 된 이미지를 표시하므로 빠릅니다. 이미지 압축 - 그렇게 빠르지는 않습니다. 이로 인해 성능상의 이유로 무중단 형식으로 저장하는 것을 원하지 않는 상황이 발생할 수 있습니다.

투명성

투명성은 세 가지 유형이있다. (웹 컨텐츠를 제작하는 아티스트를 알고 있다면이 섹션을 읽게하십시오.이 이슈에 대한 단서가없는 사람이 놀랍습니다.) 첫 번째 맛은 none입니다. 비트 맵은 사각형이며 그 아래의 모든 픽셀을가립니다.

두 번째는 지정된 색상 값 (대부분 마젠타 색을 사용하지만 모든 색상이 될 수 있음)이 투명한 것을 의미하는 비트 맵입니다. 따라서 다른 색상이 그려지고 마젠타 픽셀은 그려지지 않으므로 기본 픽셀이 표시됩니다. 이를 위해서는 이미지를 선택한 배경색으로 렌더링해야하며 부분적으로 이미지 여야하고 부분적으로 배경 픽셀이어야하는 가장자리 픽셀은 부분적으로 배경색입니다. 실제로는 흰색 배경에 완벽한 가장자리가 있고 검은 색 바탕에 가장자리에 이상한 흰색 후광 효과가있는 256 색 아이콘으로이 사실을 알 수 있습니다.

세 번째 향미료는 각 픽셀에 대해 8 비트의 투명도 (즉, 0 - 100 %의 256 값)입니다. 32 비트 비트 맵이 의미하는 바는 24 비트 색상과 8 비트 투명도입니다. 이것은 인간의 눈으로 식별 할 수있는 것보다 더 미세한 눈금을 갖는 이미지를 제공합니다. 예술가들과 이야기 할 때 경고의 한마디 - 모두 "32 비트 비트 맵"을 생성 할 수 있습니다. 그러나 이들 중 95 %는 모든 픽셀이 100 % 불투명도로 설정되고 전체 프로세스와 투명성의 필요성에 대해 단서가없는 것들을 생성합니다. (게임 아티스트는 주목할만한 예외입니다.)이 작업을 수행하는 좋은 예를 보려면 Icon Experience를 살펴보십시오.

해상도

많은 형식은 해상도, 일반적으로 DPI (인치당 도트 수)로 설명이있다. 사진을 볼 때 일반적으로 문제가되지 않습니다. 그러나 비트 맵으로 렌더링 된 차트의 예를 살펴보십시오. 차트의 텍스트를 읽을 수 있기를 원하고 600 DPI 프린터에서 깨끗하게 인쇄하고 싶지만 600 픽셀의 도트는 96 픽셀 만 사용하여 표시 할 수 있습니다. 해결책은이 능력을 제공합니다. DPI는 일부 형식으로 존재하지 않으며 다른 형식에서는 선택적입니다 (참고 : 어떤 형식에서도 필요하지는 않지만 PNG 형식에서는 DPI가 누락 된 경우가 드뭅니다).

DPI의 중요한 문제는 비트 맵을 렌더링 할 때 프린터의 해상도로 확대 및/또는 인쇄 할 수 있지만 낮은 해상도로 표시 할 수 있어야한다는 것입니다. 호출 기능을 제공해야합니다 DPI 설정 프로그램. 96 DPI에서 렌더링하기 때문에 모니터에서 표준보기를 제외하고는 쓸모없는 매우 강력한 차트 작성 프로그램이 있습니다. 용도를 제한하지 마십시오.

파일 형식

좋아, 그래서 당신은 어떤 파일 형식을 사용해야합니까? 가장 유용한 것에서부터 가장 유용하지 않은 것에가 봅시다.

PNG - 32 비트 (또는 그 이하), 무손실 압축, 작은 파일 크기 - 좋지 않은 점. Internet Explorer와 같은 일부 브라우저의 이전 버전은 투명 픽셀을 회색조로 표시하지만 최신 버전에서는 제대로 처리합니다. 모든 것을 위해 이것을 (투명을 위해 8 비트를 사용하는 32 비트 모드에서) 사용하십시오.

ICO - 바탕 화면의 응용 프로그램 등을 나타내는 데 사용되는 아이콘 파일로, 해상도와 비트 심도가 각각 다를 수있는 비트 맵 모음입니다. 이것들은 16x16에서 256x256까지의 32 비트 png 파일을 사용하여 빌드하십시오. O/S 나 어플리케이션의 비트 심도가 조금이라도 낮 으면, 즉석에서 줄이고 8 비트의 투명도를 유지하십시오.

JPEG - 24 비트 만 (즉, 투명도 없음), 손실이 많고 작은 파일 크기. 오래된 브라우저를 사용하는 사람이 많지 않으면이 형식을 사용할 이유가 없습니다. 나쁜 형식은 아니지만 PNG보다 이점이 없습니다.

GIF - 8 비트, 손실이 많고 매우 작은 파일 크기. GIF에는 두 가지 고유 한 기능이 있습니다. 먼저, 하나의 파일에 여러 개의 GIF 비트 맵을 배치하고 각 파일 사이에 지연을 설정합니다. 그런 다음 애니메이션 비트 맵을 제공하는 플레이어를 통해 재생됩니다. 이것은 모든 브라우저에서 0.9 버전으로 돌아가며 플래시 파일보다 작은 파일 크기입니다. 플립 측면에서 그것은 단지 8 비트이고 가난 해 보이는 경향이있는 오늘날의 세계에서입니다 (일부 아티스트는 8 비트로 놀라운 것을 할 수 있음). 또한 설정된 색상이 투명하므로 기본적으로 투명도 (on/off variety)를 지원합니다. 이것은 플래시 오버 헤드없이 또는 대역폭이 중요한 문제인 경우 애니메이션 비트 맵을 원할 때 유용합니다.

BMP (DIB라고도 함) - 1에서 32 비트의 무손실 대용량 파일 크기. 속도를 최우선으로 생각할 때이를 사용하는 경우가 하나 있습니다. 오늘날 그래픽 카드가 출시되기 전에 많은 2D 게임 프로그램이 압축 해제가 필요하지 않으므로 모든 비트 맵을 BMP/DIB로 저장하므로 게임을 위해 초당 60 프레임을 표시하려고 할 때 시간 절약이 중요합니다.

TIFF - 비트 심도, 압축률 (손실 또는 손실), 부엌 싱크 포함 - PNG보다 우수함. 기본적으로 정부와 일부 대기업은 미래의 소프트웨어가 이러한 오래된 파일을 읽을 수 있도록 "표준"이 필요하다고 결정했습니다. 이 모든 주장은 PNG가 법안에 적합한만큼 이해가되지 않습니다. 그러나 일부 고객 (연방 정부와 같은)에게는 PNG 대신 TIFF가 사용됩니다.고객이 요청할 때 사용합니다 (단, PNG 사용).

기타 모두 - 더 이상 사용되지 않습니다. (참고 : 많은 사람들이 내게 다른 포맷이 더 작아지는 방식에 대해 동의하지 않는다. 그러나 그들은 & 디스크 공간에 가깝다.) 비트 맵 편집기를 만드는 중이라면 모든 포맷을 읽거나 쓸 수 있어야한다. 그러나 다른 용도로는 위의 2 + 4 형식을 따르십시오.

0

당신이 사용하는 파일 형식 또는 알고리즘에 대해 뭔가를 알고 싶다면, havealookat이 링크.

관련 문제