【问题标题】:How to combine multiple Uri from Images如何从图像中组合多个 Uri
【发布时间】:2016-05-13 13:40:58
【问题描述】:

我有这个查询图库图片的功能

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();
            }
        }
    }

我是否必须为此提供两个 Uri 列表,例如我有一个

imagesUri 列表和 imageOrientationUri 列表。

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

【问题讨论】:

    标签: android android-gallery mediastore


    【解决方案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();
            }
    }
    

    所以现在对于每个新属性,您可以在类中创建一个新变量以及 getter 和 setter

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2012-12-21
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多