2009-06-23 3 views
6

미리보기 프레임을 jpeg 이미지로 저장하고 싶습니다.Android : 미리보기 프레임을 jpeg 이미지로 저장하는 방법?

나는 다음과 같은 코드를 작성하는 시도 :

public void onPreviewFrame(byte[] _data, Camera _camera) 
{ 
    if(settings.isRecording()) 
    { 
     Camera.Parameters params = _camera.getParameters(); 
     params.setPictureFormat(PixelFormat.JPEG); 
     _camera.setParameters(params); 
     String path = "ImageDir" + frameCount; 
     fileRW.setPath(path); 
     fileRW.WriteToFile(_data); 
     frameCount++; 
    } 
} 

을하지만 JPEG 이미지로 저장된 파일을 열 수 없습니다. 누구든지 jpeg 이미지로 미리보기 프레임을 저장하는 방법을 알고 있습니까?

감사합니다.

답변

-1

_data는 아마도 JPEG 형식이 아닙니다. 시작 미리보기를 호출하기 전에 Camera.Parameters.setPreviewFormat(PixelFormat.JPEG)으로 전화 했습니까?

+0

문제가 해결되지 않음 –

+0

카메라 매개 변수에서 이미지의 형식이 어떤 형식입니까? – hacken

+0

모든 안드로이드 카메라 dosent 미리보기 데이터에 대한 jpeg 형식을 지원합니다 – MoHaKa

0

미리보기 전에 Camera.Parameters.setPreviewFormat (PixelFormat.JPEG)로 PreviewFormat을 설정했지만 실제로 미리보기 형식을 설정할 수없는 것 같습니다 ...... 그건 그렇고, 기본 형식은 미리보기는 YCbCr_420_SP ....

1

수동으로 변환해야합니다. 주로 포맷 (휘도/색차 등) 변환을 처리 한 다음 아카이브를 탐색하면 안드로이드 개발자 목록에 몇 가지 예제가 있습니다. 이미지를 비트 맵에 저장 한 다음 파일에 저장합니다.

정말 조금은 고통 스럽습니다.

0

먼저 getSupportedPreviewFormats()을 호출하여 지원되는 기기의 미리보기 형식을 확인해야합니다. setPreviewFormat (PixelFormat.JPEG)을 호출하기 전에 JPEG가 지원되는지 확인하십시오.

4

이 코드를 확인하십시오. 도움이 되었기를 바랍니다.

camera.setPreviewCallback(new PreviewCallback() { 
        @Override 
        public void onPreviewFrame(byte[] data, Camera camera) { 
         // TODO Auto-generated method stub 
         Camera.Parameters parameters = camera.getParameters(); 
         Size size = parameters.getPreviewSize(); 
         YuvImage image = new YuvImage(data, ImageFormat.NV21, 
           size.width, size.height, null); 
         Rect rectangle = new Rect(); 
         rectangle.bottom = size.height; 
         rectangle.top = 0; 
         rectangle.left = 0; 
         rectangle.right = size.width; 
         ByteArrayOutputStream out2 = new ByteArrayOutputStream(); 
         image.compressToJpeg(rectangle, 100, out2); 
         DataInputStream in = new DataInputStream(); 
         in.write(out2.toByteArray()); 

         } 
        } 

       }); 
       camera.startPreview(); 
0

JPEG는 카메라 미리보기의 형식이 아닙니다. official documentation가 말한대로,

는 카메라 미리보기에서 사진을 얻기 위하여

, 당신은 아래로, 미리보기 형식을 정의 할 필요가있다 "오직 ImageFormat.NV21 및 ImageFormat.YUY2 지금은 지원됩니다"

Camera.Parameters parameters; 
parameters.setPreviewFormat(ImageFormat.NV21); //or ImageFormat.YU2 

그런 다음 Dany의 예와 같이 & JPEG를 압축합니다.

관련 문제