2009년 09월 24일
알파 채널을 포함하는 jpeg 파일 생성
rgba1234.jpg
오른쪽 클릭 -> 다른 이름으로 저장
(IE6 브라우저에서는 엑박만 표시됨)
어딘가 jpeg 메타 데이터 설명 문서에 알파채널을 포함하는 방법 또는 채널 메타 데이터 판독에 관한 구절이 있는 것을 발견.
(Java 이미지 클래스는 jpeg 알파채널을 공식적으로 지원하는 듯)
http://java.sun.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html
Y, Cb, Cr 컴포넌트 id는 각각 1, 2, 3이고 문서에서 id 4가 알파 채널이라고 하니
32비트 RGBA 비트맵을 읽어서 YCbCrA로 저장해보았다.(위의 rgba1234.jpg 파일)
컴포넌트 id는 각각 아래와 같다.
Y = 1
Cb = 2
Cr = 3
A = 4
알파.. 요놈이 문제다... 공식적으로 jpeg는 알파 채널 포함할 수 없기 때문에 대부분의 디코더에서 요놈을 못알아보고
그냥 채널이 4개니까 CMYK 채널로 읽어버리는 것이다...
어제 컴포넌트 id랑 APP0(JFIF), APP14(Adobe) 블럭 마구 건드려봤지만 알파채널로 인식하는 프로그램이 없더라..
(있으면 누가 알려주길 ㅜㅜ)
원래 알파 채널이 없으니 어쩔 수 없고 디코더를 따로 수정해서 출력해보니 쓸만했다.
결과 보기




게임에서 사용할 거라서 DIB 생성시 픽셀당 2바이트로 다운샘플링한 것인데
RGBA4444는 디더링이 좀 지저분.. green 비트를 하나 더 추가하니 볼만한 것 같기도 하고...
PSP가 5650, 5551, 4444, 8888, indexed 이런 텍스쳐를 지원하는 것 같은데 개인적으로 4444보다는 4543이 더 괜찮은 것 같다.
사람 눈이 green 요소에 가장 민감하고 알파는 그다지 정밀도가 높을 필요가 없으니..
오른쪽 클릭 -> 다른 이름으로 저장
(IE6 브라우저에서는 엑박만 표시됨)
어딘가 jpeg 메타 데이터 설명 문서에 알파채널을 포함하는 방법 또는 채널 메타 데이터 판독에 관한 구절이 있는 것을 발견.
(Java 이미지 클래스는 jpeg 알파채널을 공식적으로 지원하는 듯)
http://java.sun.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html
Y, Cb, Cr 컴포넌트 id는 각각 1, 2, 3이고 문서에서 id 4가 알파 채널이라고 하니
32비트 RGBA 비트맵을 읽어서 YCbCrA로 저장해보았다.(위의 rgba1234.jpg 파일)
컴포넌트 id는 각각 아래와 같다.
Y = 1
Cb = 2
Cr = 3
A = 4
알파.. 요놈이 문제다... 공식적으로 jpeg는 알파 채널 포함할 수 없기 때문에 대부분의 디코더에서 요놈을 못알아보고
그냥 채널이 4개니까 CMYK 채널로 읽어버리는 것이다...
어제 컴포넌트 id랑 APP0(JFIF), APP14(Adobe) 블럭 마구 건드려봤지만 알파채널로 인식하는 프로그램이 없더라..
(있으면 누가 알려주길 ㅜㅜ)
원래 알파 채널이 없으니 어쩔 수 없고 디코더를 따로 수정해서 출력해보니 쓸만했다.
결과 보기

요놈은 알파채널(원래 수영장에서 노는 그림이지만 캐릭 부분만 긁어내봤다.. 헉헉..)
요놈은 RGBA4444 다운샘플링해서 출력한 것
요놈은 RGBA4543 다운샘플링해서 출력한 것
다른이미지의 RGBA4543 다운샘플링
게임에서 사용할 거라서 DIB 생성시 픽셀당 2바이트로 다운샘플링한 것인데
RGBA4444는 디더링이 좀 지저분.. green 비트를 하나 더 추가하니 볼만한 것 같기도 하고...
PSP가 5650, 5551, 4444, 8888, indexed 이런 텍스쳐를 지원하는 것 같은데 개인적으로 4444보다는 4543이 더 괜찮은 것 같다.
사람 눈이 green 요소에 가장 민감하고 알파는 그다지 정밀도가 높을 필요가 없으니..
# by | 2009/09/24 11:07 | 트랙백 | 덧글(3)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
그래서 두바이트색상표현은 놔두고 알파만 어떻게 따로관리를할까 고민중입니다 ㄷㄷ
전에회사에서 그래픽팀장님께서 색에좀 민감해서 최대한 가깝게표현해주려고했었거든요ㅎ
당연히 그대로표현할수있다면 좋은거니까요 ㅎ
흠 고민이군요
PS 지금 출근길에폰브라우져로 글쓰고있어요ㅆ
ㅎㅎ
현재 단말 중 가장 색이 풍부한 게 18비트니까요.
그러면 QVGA 풀스크린 이미지 DIB의 크기가
RGBA4543 : 150K - 6개
RGBA6666 : 225K - 4개
RGBA8888 : 300K - 3개
뒤에껀 1M힙에 동시에 올릴 수 있는 최대 이미지 개수
디코더가 쓰는 메모리나 시스템 메모리, 단편화 모든 변수 제외하고 저렇네요. ㅎㅎ
RLE 압축하면 많이 줄어들지도 모르겠네요.
캐릭터라면 투명한 부분이 많으니까.
개조RLE로 색상+알파 이런식으로 구성할까하고 최종적으로 생각 하고 있어요
알파도 16가지만해서 RLE구성할때 1byte에 2개를 집어넣구요..