2013-02-14 3 views
0

라이브러리 Libpng로 1bits (2 색) 또는 2bit (4 색) 깊이의 PNG 이미지를 생성하고 싶습니다.Libpng로 2 비트 색상 심도 PNG 이미지 만들기

아무도 그 방법을 알고 있습니까? 나는 예제를 테스트했으며, 모두 8 비트 색상 깊이로 작동하는 것 같습니다.

필자는 png_set_IHDR을 알고 있지만 예제에서는 필자가 png_set_IHDR의 깊이 매개 변수를 8에서 2 또는 1로 변경하면 프로그램에서 2 또는 4의 픽셀 하나를 그립니다. 생각해 보니, 이는 메모리 할당이 png_malloc 함수.

예를 들어 (http://www.lemoda.net/c/write-png/) 수정하려고하면 png_malloc 함수는 sizeof uint8_t 이미지의 모든 픽셀을 할당합니다.

png_malloc (png_ptr, sizeof (uint8_t) * bitmap->width * pixel_size); 

1 비트 또는 2 비트 픽셀을 할당하는 방법을 알려줄 수 있습니까?

png_set_IHDR에 감사의 Jo2s는

+0

비트 심도가 1 또는 2 인'png_set_IHDR'을 사용하여 직접 수행됩니다. 그 밖의 무엇이 필요합니까? – mmgp

답변

1

의 bit_depth 매개 변수는 모든 색상 구성 요소의 비트 깊이를 설정합니다. PNG_COLOR_TYPE_RGB와 함께 빨간색 구성 요소에 대해 1 비트, 녹색에 대해 1 비트, 파란색에 대해 1 비트가됩니다.

당신은 PNG_COLOR_TYPE_PALETTE와 png_set_IHDR를 호출해야하고, bit_depth가 하나 인 경우, 두 개의 색상 팔레트가 있어야합니다 (0과 1) bit_depth 2, 네 가지 색상 (0 ~ 3)

한 경우
+0

PNG_COLOR_TYPE_RGB의 경우 PNG 사양에서 비트 심도 8과 16 만 허용됩니다. Andre는 PNG_COLOR_TYPE_PALETTE를 사용해야합니다. –

관련 문제