2012-05-28 2 views
2

내 애플리케이션에서 사진을 Android 카메라로 캡처 한 다음 서버로 보내려고합니다. 이를 위해 클라이언트 소켓 프로그래밍을 사용합니다. 캡처 사진을 bytearray (byte [])로 변환 한 다음 서버로 보냅니다. 모든 일은 영원히 작동합니다.Android : 카메라로 캡처 한 원본 사진을 얻을 수 없음 (압축 사진 만 읽을 수 있음)

문제가 있습니다. 원본 사진을 서버로 보낼 수 없습니다. 미리보기 이미지는 Android 휴대 전화에서 전송됩니다. 그러나 카메라로 사진을 찍을 때 원본 사진이 갤러리에 있습니다.

내 원본 사진을 내 응용 프로그램에서 사용하려면 어떻게해야합니까?

내 코드 :

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG); 
     cameraIntent.putExtra("return-data", true); 
    startActivityForResult(Intent.createChooser(cameraIntent, "Select Picture"), 
        CAMERA_REQUEST); 

그리고 onActivityResult를 방법에 :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == CAMERA_REQUEST) { 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
//   byte[] a = (byte[]) data.getExtras().getByteArray("data"); // I also use this but not work 


     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     photo.compress(CompressFormat.JPEG, 100, bos); 
     byte[] bitmapdata = bos.toByteArray(); 


    } 
} 

사진의 BitmapData에가 있지만 압축 된 사진 원본이 아닌. 사람들 중 일부는 이렇게 말합니다. 의 품질 필드를 변경하십시오. compress (CompressFormat.JPEG, 100, bos); 0에서 100 사이에 있지만 아무 것도 발생하지 않습니다.

- >> 카메라

에 의해 캡처 된 원본 사진을 얻을 수있는 또 다른 방법이있다 - 사진은 내 컴퓨터의 폴더에있는 경우 >>는 나는이 사진을 읽어 파일에 경로를 지정하여. ex- 파일 file = 새 파일 (c : \ newphoto \ image.jpg);. 사진의 이름과 위치를 알고 있기 때문에 안드로이드에서이 코드를 사용하여 원본 사진을 읽을 수 있습니까? 그렇다면 갤러리에서 사진을 읽을 경로는 무엇입니까? 경로를 다음과 같이 지정하면이 작업이 가능합니까? \ DCIM \ Camera \ photoName.jpg.

- >> 또는 내 현재 코드에서 일부 변경 필요하며 잘 작동합니까?

답변

6

ACTION_IMAGE_CAPTURE을 사용하여 의도를 사용하여 이미지를 캡처하고 있습니다. Intent를 사용하여 카메라를 정상적으로 시작하면 onActivityResult()에서 이미지를 비트 맵으로 반환하지만 축소판 용도로 사용됩니다.

카메라에서 전체 해상도 이미지를 얻으려면 카메라 작동을 시작하려는 의도를 파일로 제공해야합니다. 여기

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
File out = Environment.getExternalStorageDirectory(); 
out = new File(out, imagename); 
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out)); 
startActivityForResult(i, CAMERA_RESULT); 

다음은 카메라가 이미지를 작성하고자하는 파일의 URI를 취하는 MediaStore.EXTRA_OUTPUT 매개 변수가 같은

당신은 할 수 있습니다.

자세한 정보는 예를

Capture full resolution image from camera

아래를 참조 할 수 있습니다
관련 문제