2011-08-17 2 views
1

RGB 구성 요소에 RGB 등의 다양한 알파가 포함 된 이미지가 있습니다 (예 : 0xFFFFFF09, RGBA 형식). 그러나 UIImage 나 CGImage API를 사용하여이 이미지를로드 한 다음 CGBitmapContext에 그려 넣으면 RGB 구성 요소가 알파 값으로 설정된 회색 음영이 출력됩니다. 위 예제에서 픽셀이 나옵니다. 0xFFFFFF09 대신 0x09090909. 따라서 투명도가 다양하고 흰색이되어야하는 이미지는 본질적으로 검은 색 투명도로 나타납니다. 로드중인 PNG 파일에는 아무 문제가 없습니다. 다양한 그래픽 프로그램이 모두 올바르게 표시됩니다.내 픽셀 색상을 변경하는 UIImage/CGImage

이것이 내 kCGImageAlphaPremultipliedFirst를 사용하는 것과 관련이 있는지 궁금해했지만 CGBitmapContextCreate가 다른 값으로 실패하기 때문에 실험 할 수 없습니다.

여기서 궁극적 인 목적은 glTexImage2D를 사용하여 텍스처에 업로드 할 수있는 픽셀 데이터를 얻는 것입니다. libPNG를 사용하여 iOS API를 완전히 무시할 수 있지만 다른 제안은 무엇입니까? 많은 감사합니다.

+0

이 질문은 이미 오래된 것입니까? 그렇지 않은 경우 문제를 재현하기 위해 샘플 프로젝트에서 이미지를로드하는 코드를 제공 할 수 있습니까? – Kjellski

+0

제안 해 주셔서 감사합니다. 이 사실을 알 수 없으므로 CGImage API 사용을 중단하고 libpng로 이미지를 직접로드하십시오. – RedMarbleGames

답변

0

알파가 x 인 검정색 배경의 흰색은 모든 구성 요소에서 x에 해당하는 회색 값입니다. 어떻게 곱셈 블렌딩이 작동하는지.

+1

답변을 주셔서 감사합니다. 그러나 실제로 곱셈 블렌딩없이 파일 *에서로드 된 데이터의 무결성을 유지하는 방법에 관한 질문을 다루지는 않습니다. 이 그래픽을 이미지 편집기에로드하면 점차 희미 해지는 흰색 이미지가됩니다. 회색은 전혀 없습니다. 그러나 iOS가로드 될 때 데이터를 변경하기 때문에 이것이 피하려고합니다. – RedMarbleGames