마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

byte[] 데이터를 canvas에 그릴 때 문제입니다.

0 추천
//br : byte[] br = new byte[640*480*3];
int nRetSize = xxxLib.GetDecodeBuffer(br);
Bitmap bmp = Bitmap.createBitmap(640, 480, Bitmap.Config.RGB_565);
			
if (nRetSize > 0) 
{						
	ByteBuffer buf = ByteBuffer.wrap(br);
	bmp.copyPixelsFromBuffer(buf);
		
	synchronized (mHolder) {
		canvas = mHolder.lockCanvas();
		if (canvas == null) break;
						
		canvas.drawBitmap(bmp, null, dst, null);						
										
		mHolder.unlockCanvasAndPost(canvas);
	}														
}

 

xxxLib으로부터 디코딩된 데이터를 byte[] 에 담고, bitmap에 담아 canvas에서 그리고 있습니다.

 

근데 이미지가 1/3정도만 출력되고 나머지는 검은색으로 출력되는데요.

 

디코딩이 잘못되었을 수도 있지만, 비트맵으로 바꾸는 부분에 손실이 생겼을 수도 있다고 생각되는데..

 

잘못쓴 부분이 있거나 다른방법으로 bitmap을 변환하는 방법이 있다면 알려주세요...감사합니다..!

emerald (760 포인트) 님이 2014년 8월 7일 질문

1개의 답변

0 추천
Bitmap.Config.RGB_565로 설정하면 픽셀당 2바이트를 쓰는데 버퍼는 *3이네요

저 방법 말고 BitmapFactory.decodeByteArray를 써보세요
alkyne (22,960 포인트) 님이 2014년 8월 8일 답변
...