2013-08-11 121 views
5

Tôi đang cố gắng để có được đường dẫn đường dẫn, không phải đối tượng bitmap.
Khi tôi truy vấn những điều này, một số đường dẫn hình thu nhỏ không có lý do nào. (Tôi có 1028 hình ảnh thu nhỏ trong thiết bị của mình, độ dài con trỏ thực sự là 1028, nhưng vẫn trả về giá trị rỗng) Tôi biết có 1028 hình thu nhỏ vì tôi đã kiểm tra. Dưới đây là mã của tôi:Lấy hình thu nhỏ của đường dẫn tệp hình ảnh

 String[] projection = {MediaStore.Images.Thumbnails._ID}; 
    // Create the cursor pointing to the SDCard 

    cursor = this.getContentResolver().query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
      projection, // Which columns to return 
      null,  // Return all rows 
      null, 
      MediaStore.Images.Thumbnails.IMAGE_ID); 
    // Get the column index of the Thumbnails Image ID 
    Log.d(Global.TAG, "BEFORE"); 
    columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID); 
    Log.d(Global.TAG, "AFTER1"); 
    for(int i =0;i<cursor.getCount();i++){ 
     cursor.moveToPosition(i); 

     Log.d("MyTag","BBABA" + i +" : " + getThumbnailPathForLocalFile(cursor.getLong(columnIndex))); 
    } 
    cursor.close(); 

My getThumbnailPathForLocalFile:

String getThumbnailPathForLocalFile(long fileId) 
{ 
    // Log.d(Global., msg) 
    Cursor thumbCursor = null; 
    try 
    { 
     thumbCursor = this.getContentResolver(). 
       query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI 
       , null 
       , MediaStore.Images.Thumbnails.IMAGE_ID + " = " + fileId+ " AND " 
        + MediaStore.Images.Thumbnails.KIND + " = " 
        + MediaStore.Images.Thumbnails.MINI_KIND , null, null); 

     if(thumbCursor.moveToFirst()) 
     { 
      // the path is stored in the DATA column 
      int dataIndex = thumbCursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
      String thumbnailPath = thumbCursor.getString(dataIndex); 
      return thumbnailPath; 
     } 
    } 
    finally 
    { 
     if(thumbCursor != null) 
     { 
      thumbCursor.close(); 
     } 
    } 

    return null; 
} 

Dưới đây là logcat của tôi: http://pastebin.com/UZLZF9Pg

Sau khi kiểm tra, tôi thấy rằng các id tôi gửi cũng giống như các chỉ số cho vòng lặp. Tôi thậm chí không chắc chắn rằng mã của tôi là nghĩa vụ phải làm việc, vì vậy bất kỳ mã nào khác sẽ là tuyệt vời.

+1

Tại sao bạn thiết DỰ bạn để MediaStore.Images.Thumbnails._ID và không MediaStore.Images.Thumbnails.DATA? –

+0

@IgorGanapolsky Tôi không chắc chắn. Tôi nghĩ rằng tôi đã lấy ví dụ đó ra một nơi nào đó. Bạn có nghĩ rằng nó có thể giải quyết vấn đề? Dù sao thì, nó cũng không liên quan. – idish

+0

Tôi đã hỏi vì tôi đã sử dụng {MediaStore.Images.Thumbnails.DATA}, giống như trong giải pháp và nó hoạt động. Vì vậy, tôi đã tò mò nếu bạn có một cách tiếp cận khác nhau. –

Trả lời

11

Bạn nên truy vấn MediaStore.Images.Thumbnails.DATA. Để sửa đổi ví dụ của bạn, nó sẽ trông như thế này.

String[] projection = {MediaStore.Images.Thumbnails.DATA}; 
// Create the cursor pointing to the SDCard 

    Cursor cursor = this.getContentResolver().query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
     projection, // Which columns to return 
     null,  // Return all rows 
     null, 
     null); 
// Get the column index of the Thumbnails Image ID 
Log.d(TAG, "BEFORE"); 
int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA); 
Log.d(TAG, "AFTER1"); 
for(int i =0;i<cursor.getCount();i++){ 
    cursor.moveToPosition(i); 

    Log.d("MyTag","BBABA" + i +" : " + cursor.getString(columnIndex)); 
} 
cursor.close(); 

tham khảo: How to get imagepath from thumbnail path of a image?

+0

Điều này thật tuyệt vời !, Cảm ơn bạn rất nhiều, tôi đã tìm kiếm rất nhiều giải pháp này :) – idish

+0

Xin chào, hy vọng bạn có thể giúp tôi với một câu hỏi nhỏ khác: Tôi vừa xóa tất cả hình ảnh trong thư viện của mình và sau đó chụp khoảng 12 hình ảnh bằng máy ảnh. Sau đó, tôi vào Gallery và thấy các hình thu nhỏ hiển thị độc đáo. Tuy nhiên, khi tôi vào ứng dụng của mình để hiển thị những hình thu nhỏ đó, tôi không thấy gì cả. Sau khi tìm kiếm thư mục .Thubnails trong DCIM, không có tệp jpg nào cả, nhưng chỉ có một tệp lạ có trọng số 10.9 MB. Bạn có biết tại sao thư mục .Thumbnails của tôi không hiển thị hình thu nhỏ của tôi không? – idish

+0

@idish Vui lòng mở câu hỏi đó dưới dạng câu hỏi riêng và cung cấp thêm chi tiết (tên của 'Tệp lạ'), cũng là chi tiết điện thoại và phiên bản hệ điều hành. – yogurtearl