代码之家  ›  专栏  ›  技术社区  ›  stack

如何合并图像中的多个Uri

  •  1
  • stack  · 技术社区  · 8 年前

    我有一个查询图库图像的函数

    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吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Prerak Sola    8 年前

    您可以为图像创建对象,如:

    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