2013-05-07 2 views
0

를 반환합니다. 내 의견으로는 특별한 것은 없습니다. 이 이미지에 대한 정보를 얻으려고 할 때 문제가 발생합니다. 다른 곳에서 내 코드 :커서는 항상 내가 이런 식으로 내 카메라에서 사진을 저장하고있어

Uri selectedImage = Uri.fromFile(new File(sample.getPicture())); 
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
mediaScanIntent.setData(selectedImage); 
getSherlockActivity().sendBroadcast(mediaScanIntent); //Now it's in the Gallery 
selectedImage = Uri.parse("content://"+(new File(sample.getPicture()).toString())); 
String[] filePathColumn = {MediaStore.Images.ImageColumns.ORIENTATION}; 
Cursor cursor = getSherlockActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
if(cursor != null) 
{ 
    cursor.moveToFirst(); 
    int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
    String filePath = cursor.getString(columnIndex); 
    Log.i("ImageTest", cursor.getString(columnIndex)); 
    cursor.close(); 
} 
else 
{ 
    Log.i("ImageTest", selectedImage .toString()); 
} 

는 다른 정상입니다 반환 content:///storage/emulated/0/com.korcholis.testapp/pictures/1aaf2e587kg519cejk88ch6hle372.png를, 로그,하지만 커서는 cursor.moveToFirst()에서 null입니다. 커서가 이미지를 찾을 수없는 것 같습니다. 그러나 파일 관리자를 통해 저장소로 들어갈 때 이미지는 올바른 폴더에서 쉽게 찾을 수 있습니다. 또한 file://을 사용할 때 파일이 실제로 존재하는지 확인했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 5/8/2013 : 나는 해결책을 찾고 있었지만 불가능 해 보였습니다. 나는 다른 스레드에서 file://getContentResolver()을 사용하기에 충분하다고 생각하지 않기 때문에 content://을 사용해 보았습니다. 이것은 내 노력에도 불구하고 예상대로 잘 돌아 가지 않습니다. 내가 사용하고있는 코드에 마지막 코드 블럭을 편집했다. 나는 심지어 그것을 갤러리에 추가하려고 시도했기 때문에 "해결 된 컨텐츠 목록"의 항목으로 간주 될 수 있습니다.

+0

당신이 파일에 대한 정보를 원할 때 문제가 온다 당신 말을. 코드의 다른 부분에 대한 이미지를 원한다는 것을 이해합니다. 그 시점에서 정확히 무엇이 필요합니까? –

+0

[MediaStore.Images.Media.ORIENTATION]을 [answer here] (http://stackoverflow.com/questions/16397279/implement-a-take-picture-crop-or-use-premade-)로 가져오고 싶습니다. 의도). 그냥. 나는 또한 그림을 잡고 그림 뷰로 드로어 블 (Drawable)로 설정할 수 있기 때문에 그림이 존재한다. – Korcholis

답변

1

대신 당신은 단지 당신이 할 수있는 하나 개의 이미지의 orienataion 찾을 필요가 있기 때문에, 커서를 사용 :

ExifInterface exif = new ExifInterface(selectedImage); 
exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); 
if(orientation == 3 || orientation == 6 || orientation == 8){ 
    Matrix matrix = new Matrix(); 
    if (orientation == 6) 
     matrix.postRotate(90); 
    else if (orientation == 3) 
     matrix.postRotate(180); 
    else if (orientation == 8) 
     matrix.postRotate(270); 
    result = Bitmap.createBitmap(result, 0, 0, result.getWidth(), result.getHeight(), matrix, true); // rotating bitmap 
} 
+0

hello @kushwaha 이미지의 방향을 찾고 'ExifInterface'를 사용하면 항상 0을 반환합니다. 왜 항상 0을 반환하는지 알려주세요. – Dory

+0

이 방법은 카메라 앱이 exif 데이터가있는 그림을 저장하는 경우에만 작동합니다. 이는 요즘 드문 경우입니다. EXIF가 없으면 'null'을 반환합니다. –