2014-09-20 1 views
0

현재 Restaining 서비스에 Base64로 이미지를 전달하고 있습니다. 하지만 파일을 읽을 수 없습니다. 여기 내 코드입니다 :G64의 base64로 이미지 변환

if (requestCode == iPictureCode && resultCode == RESULT_OK) { String picturePath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH); String image = processPictureWhenReady(picturePath); }


`개인 문자열 processPictureWhenReady (최종 문자열 picturePath) { 최종 파일 pictureFile = 새로운 파일 (picturePath);

if (pictureFile.exists()) { 
     // The picture is ready; process it. 
     Bitmap bitmap = BitmapFactory.decodeFile(pictureFile.getAbsolutePath()); 
     bitmap = CameraUtils.resizeImageToHalf(bitmap); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 85, stream); 
     String base64Image = Base64.encodeToString(stream.toByteArray(), Base64.DEFAULT); 
     return base64Image; 
    } 

은}`

이 문제가 될 수 무엇 pictureFile.exists() '

의 경우 블록을 입력하지?

답변

2

example in the developer docs에서 코드를 적용한 것처럼 보이지만, else 절을 제거했습니다. 여기에서 FileObserver은 이미지를 실제로 사용할 수있는 경우를 감지하는 데 사용됩니다. 액티비티가 반환 될 때 전체 크기 이미지가 즉시 준비되지 않을 수 있으므로이 부분도 필요합니다.

+0

답장을 보내 주셔서 감사합니다. 제 질문에 해당 부분을 제거했습니다 ... 그러나 EXTRA_PICTURE_FILE_PATH와 (과) EXTRA_THUMBNAIL_FILE_PATH을 (를) 바꿨을 때 저에게 맞습니다. –

+1

미리보기 이미지는 항상 즉시 준비됩니다. 활동 결과가 반환되므로 저해상도 이미지 만 필요하면 바로 사용할 수 있습니다. 그러나, 필요하다면 풀 사이즈 이미지를 감지하기 위해서는'FileObserver'가 필요합니다. 미리보기 이미지를 바로 사용할 수있는 이유는 전체 이미지를 준비하는 동안 사진이 촬영되었다는 확인 메시지로 UI에 무언가를 표시 할 수 있기 때문입니다. –

+0

도와 주셔서 감사합니다 @ TonyAllevato :) –