2016-05-13 74 views
1

结合我有这个功能,查询图库图片如何将多个乌里从图片

public void getImagesFromGallary(Context context) { 

     List<Uri> imagesUri = new ArrayList<>(); 
    List<Uri> imageOrientationUri = new ArrayList<>(); 


     Cursor imageCursor = null; 
     try { 
      final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.ORIENTATION}; 
      final String orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC"; 


      imageCursor = context.getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 
      while (imageCursor.moveToNext()) { 
       Uri uri = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA))); 
       Uri uriOrientation = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION))); 
       imagesUri.add(uri); 
       imageOrientationUri.add(uriOrientation); 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (imageCursor != null && !imageCursor.isClosed()) { 
       imageCursor.close(); 
      } 
     } 
    } 

我必须有这个两名地址列表,比如我有一个

imagesUri列表和imageOrientationUri列表。

如果我想从图像中获取更多信息,我该如何解析光标中的另一个Uri?

回答

1

您可以创建类似图像的对象:

public class ImageDetails { 

    private URI imageURI; 
    private URI imageOrientationURI; 

    public URI getImageURI() { 
     return imageURI; 
    } 

    public void setImageURI(URI imageURI) { 
     this.imageURI = imageURI; 
    } 

    public URI getImageOrientationURI() { 
     return imageOrientationURI; 
    } 

    public void setImageOrientationURI(URI imageOrientationURI) { 
     this.imageOrientationURI = imageOrientationURI; 
    } 
} 

你创建一个单独的列表,并添加细节,它喜欢:

public void getImagesFromGallary(Context context) { 

    List<ImageDetails> imageDetails = new ArrayList<>(); 

    Cursor imageCursor = null; 
    try { 
     final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.ORIENTATION}; 
     final String orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC"; 

     imageCursor = context.getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 
     while (imageCursor.moveToNext()) { 
      ImageDetails tmp = new ImageDetails(); 
      tmp.setImageURI(Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION)))); 
      tmp.setImageOrientationURI(Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)))); 

      imageDetails.add(tmp); 

     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     if (imageCursor != null && !imageCursor.isClosed()) { 
      imageCursor.close(); 
     } 
} 

因此,对于每一个新的属性现在,你可以在班级中创建一个新的变量以及获取者和设置者