2013-07-24 2 views
1

내장 카메라 (datasheet here)에서 80 x 60 해상도의 16 비트 컬러 이미지를 얻으려고합니다. 카메라에서 9600 (80 * 60 * 16/8) 바이트를 성공적으로 가져올 수 있지만 이미지를 표시하는 데 문제가 있습니다.16 비트 원시 RGB_565 안드로이드 이미지

bm = Bitmap.createBitmap(80, 60, Bitmap.Config.RGB_565); 
bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes)); 

jpegBytes 이미지의 바이트의 배열이며 9600 바이트 길이 : 나는 비트 맵으로 바이트 배열을 변환하려면 다음 코드를 사용하고 있습니다. 다음과 같이

지금, 나는 점점 오전 이미지 : 시간의

corrupted image

99 %. 그러나, 나는 다음과 같이 손상되지 않은 이미지를 얻을 수 있어요 없습니다 :

uncorrupted image

를 매우 드물게. 왜 이런 일이 일어나고 있는지에 대한 제안은 누구에게 있습니까? 정말 고마워!

UPDATE : 모든 픽셀이 올바른 자리에 있지만 자신의 RGB 값이 혼합 가지고있는 것처럼

보인다. 예를 들어, 두 사진 사이의 흰색 부분은 RGB의 순서가 흰색을 얻는 데 중요하지 않기 때문에 동일합니다. 그러나 빨간색 의자가 손상된 이미지에서 파란색으로 표시되고 파란색 배낭이 손상된 이미지에서 녹색으로 표시되기 때문에 색상이 섞여 있음을 분명히 알 수 있습니다.

답변

0

나는이 문제가 구성 때문이라고 생각합니다. Bitmap.Config.RGB_565. 는 아래 로이드 문서

각 화소가 2 바이트에 저장 만 RGB 채널 인코딩의 추출물이다 : 레드 정밀도 (32 개 가능한 값)의 5 비트들로 저장되고, 녹색의 6 비트로 저장 정밀도 (64 가지 가능한 값) 및 파란색은 5 비트 정밀도로 저장됩니다. 이 구성은 소스의 구성에 따라 약간의 시각적 인 아티팩트를 생성 할 수 있습니다. 예를 들어, 디더링을 사용하지 않으면 결과에 녹색 색조가 보일 수 있습니다. 더 나은 결과를 얻으려면 디더링을 적용해야합니다.이 구성은 높은 색 충실도가 필요하지 않은 불투명 비트 맵을 사용할 때 유용 할 수 있습니다.

희망이는 녹색 색조가없는

+0

이미지를하는 데 도움이 - 모든 픽셀이 변색 어떤 severly 있습니다. 이미 이미지가 흐려져 문제가 지속됩니다. –