2016-09-15 2 views
1

사진을 찍어 Android/data/package/files에 저장하는 응용 프로그램을 개발 중입니다. 사용 된 저장 용량을 줄이고 싶습니다. 저장하기 전에 사진의 크기를 조정하고 싶습니다. 잠시 동안 출력 경로를 추가로 통과하는 새로운 의도를 호출합니다. 원하는 크기를 전달할 수 있습니까 아니면 저장하기 전에 비트 맵을 가질 수 있습니까?주어진 크기의 사진 가져 오기 Android

public void takePicture(View view){ 
    Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File f = new File(getPath(nameEdit.getText().toString())); 
    path = f.getAbsolutePath(); 
    pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
    if (pictureIntent.resolveActivity(getPackageManager())!=null){ 
     startActivityForResult(pictureIntent,REQUEST_IMAGE_CAPTURE); 
    } 
} 

답변

2

도 크기를 통과 할 수 있는가 싶어

번호

그것을 저장하기 전에 비트 맵을 가질 수 있습니다?

아니요. 자신의 ContentProvider을 작성하고 Uri을 파일 대신 사용할 수 있습니다. 카메라 앱이 콘텐츠 저장을 시도하면 먼저 해당 정보를 메모리에 저장합니다. 그러나 전체 해상도 사진을 저장할 힙 공간이 충분하지 않으므로 OutOfMemoryError으로 충돌합니다.

BitmapFactory.Options에 설정된 inSampleSize과 함께 BitmapFactory을 사용하여 카메라에서 기록한 파일을 읽고 크기가 조정 된 이미지를 저장 한 다음 전체 해상도 이미지를 삭제할 수 있습니다. 또는 EXTRA_OUTPUT을 건너 뛰면 onHandleIntent()에 전달 된 IntentgetExtra("data")을 호출하여 얻은 미리보기 이미지가 표시됩니다.

+0

크기를 저장하고 크기를 조정 한 다음 원본 크기의 사진을 삭제한다고 생각했지만 더 효율적인 것으로 기대하고있었습니다. 가능하지 않다면 나는 이렇게 할 것입니다. 고맙습니다 – Leonardo