2010-07-23 3 views
6

decodeByteArray를 사용할 수 없다는 Google 문제 보고서가 있기 때문에 간단한 방법이 있는지 물어 봅니다. 그러나이 보고서는 2008 년에 시작되었으며 거기에 게시되지 않은 해결책이 있기를 희망했습니다. 문제 보고서에 나와있는 방법은 형식을 직접 해독하는 것이지만 프로그램을 넣지 않고 속도를 늦출 필요가 없습니다. 어떤 도움이라도 인정 될 것입니다.카메라의 onPreviewFrame에서 바이트 배열을 android의 그림으로 변환하는 간단한 방법이 있습니까?

답변

3

가장 쉬운 방법은 다음의 BufferedImage를 만드는 방법이다

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length); 

데이터는 바이트의 배열이다.

+0

Android에서 작동하는지 확인 하시겠습니까? BufferedImage 또는 ImageIO에 대한 참조 자료를 찾을 수 없습니다. Java 언어 참조에 나열되어 있지만 Android의 – RyoxSinfar

+0

은 아닙니다. 예. 잘못된 코드를 복사했습니다. 나는 내 대답을 수정했다. 죄송합니다. – RoflcoptrException

+0

원래 대답은 내가 생각한 바가 있지만 null 비트 맵을 돌려 준다. – RyoxSinfar

8

바이트 배열이 카메라 미리보기에 있다고 가정합니다. 그렇다면 2.2로 해독해야하지만 이제는 매우 간단합니다. 데이터 만 ImageFormat.NV21(int code 17)

img = new YuvImage(imgData, ImageFormat.NV21, width, height, null); 

직사각형 화상을 동일한 크기로 생성되는 바와

바이트 배열로부터 YUV 이미지를 만든다.

ByteArrayOutputStream을 만들고이 사각형과 압축 값을 compressToJpeg()으로 전달하십시오.

그럼 당신은 내가 콜백의 모든 프레임이 사용

Bitmap mBitmap = BitmapFactory.decodeByteArray(outputStream.toByteArry(),0,outputStream.size()); 

사용할 수 있으며 그것을 잘 작동합니다. 희망이 도움이됩니다.

+0

코드를 올바르게 표시 할 수 있습니까? – Nepster

관련 문제