2014-09-02 1 views
4

카메라에서 미리보기 데이터가 나타납니다. NV21 형식입니다. 미리보기를 SD 카드, 즉 비트 맵에 저장하고 싶습니다. 내 코드가 이미지를 가져 와서 저장하고 있지만 갤러리에서는 미리보기가 캡처되지 않습니다. 그것은 단지 검은 사각형입니다, 여기에 코드가 있습니다.NV21 이미지 형식을 비트 맵으로 변환하는 방법은 무엇입니까?

public void processImage() { 

    Bitmap bitmap = null; 

    if (flag == true) { 

     flag = false; 

     if (mCamera != null) { 

      Camera.Parameters parameters = mCamera.getParameters(); 

      int imageFormat = parameters.getPreviewFormat(); 

      if (imageFormat == ImageFormat.NV21) { 
       Toast.makeText(mContext, "Format: NV21", Toast.LENGTH_SHORT) 
         .show(); 
       int w = parameters.getPreviewSize().width; 
       int h = parameters.getPreviewSize().height; 

       YuvImage yuvImage = new YuvImage(mData, imageFormat, w, h, 
         null); 

       Rect rect = new Rect(0, 0, w, h); 

       ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

       yuvImage.compressToJpeg(rect, 100, baos); 

       byte[] jData = baos.toByteArray(); 

       bitmap = BitmapFactory.decodeByteArray(jData, 0, 
         jData.length); 
      } 

      else if (imageFormat == ImageFormat.JPEG 
        || imageFormat == ImageFormat.RGB_565) { 

       Toast.makeText(mContext, "Format: JPEG||RGB_565", 
         Toast.LENGTH_SHORT).show(); 
       bitmap = BitmapFactory.decodeByteArray(mData, 0, 
         mData.length); 
      } 
     } 

     if (bitmap != null) { 
      saveImage(bitmap); 
      Toast.makeText(mContext, "Image Saved", Toast.LENGTH_SHORT) 
        .show(); 
     } else 
      Toast.makeText(mContext, "Bitmap Null", Toast.LENGTH_SHORT) 
        .show(); 
    } 
} 
+0

해결 방법을 찾으셨습니까? – Tony

답변

0

당신은 코드처럼, 가장 쉬운 방법은 NV21 바이트 배열에서 YuvImage을 만든 다음 파일 출력 스트림에서 JPEG로 압축하는 갤러리에서 볼 수 NV21 미리보기 이미지를 저장하려면 아래 :

FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/imagename.jpg"); 
YuvImage yuvImage = new YuvImage(nv21bytearray, ImageFormat.NV21, width, height, null); 
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, fos); 
fos.close(); 

이미지를 저장하려면 경로를 변경해야합니다.

관련 문제