android - 如何组合图像中的多个 Uri

标签 android android-gallery mediastore

我有查询图库图片的功能

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 怎么办?

最佳答案

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

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

关于android - 如何组合图像中的多个 Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37211565/

相关文章:

android - 在 Android ExpandableListView 中,如何更改两个组之间的边距

android - 文件未添加到图库 android

android - 无法在 nexus 5 marshmallow 中从 Google 照片应用中选择照片和视频

android - HTML 文件上传不会在 Android 上显示图库

java - Android Java MediaStore 排序顺序区分大小写

java - Android - 网页 View 进度条

android - 如何启动 android web 服务器服务?

android - 使用 ANR Watch Dog 时 Crashlytics 不工作

Android:从android gallery app中选择后从mediaStore获取路径

Android: picasso 加载图片失败。如何显示错误信息