首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cordova-plugin-camera :如何打开特定文件夹中的图像,而不是显示画廊中的所有图像

cordova-plugin-camera :如何打开特定文件夹中的图像,而不是显示画廊中的所有图像
EN

Stack Overflow用户
提问于 2017-01-31 16:32:42
回答 2查看 2.6K关注 0票数 0

我需要打开图库来选择我的android应用程序中的图像。这是我的代码,它工作得很好。

但是通过使用PHOTOLIBRARY,它将从设备的照片库中打开图像,而通过使用SAVEDPHOTOALBUM将只从设备的Camera Roll相册中选择图像-正如我可以在这里阅读https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/

我想打开我的应用程序特定的文件夹,而不是画廊文件夹(例如:我创建了一个名为'MYAPPIMAGES‘的文件夹,其中包含来自我的应用程序的图像,我只想显示'MYAPPIMAGES’文件夹中的图像,而不是画廊中的所有图像)。我怎样才能实现这个行为呢?有没有这样做的机会?提前谢谢。

代码语言:javascript
复制
var picOptions = {
        destinationType: navigator.camera.DestinationType.FILE_URI,
        quality: 80,
        targetWidth: 800,
        targetHeight: 800,
        maximumImagesCount: 5,
        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY 
    };

    $cordovaImagePicker.getPictures(picOptions).then(function (imageURI) {

        for (var i = 0; i < imageURI.length; i++) {
            var str = imageURI[i];
            var n = str.lastIndexOf('/');
            var splitStr = str.substring(n+1);
            var dir = str.substring(0,n+1);
            console.log(imageURI[i]+' '+splitStr+' '+dir);
            convert64(imageURI[i], splitStr, dir); 

        }
EN

回答 2

Stack Overflow用户

发布于 2017-01-31 18:27:57

该选项中允许的唯一值是:

Camera.PictureSourceType :枚举定义了Camera.getPicture调用的输出格式。注意:在iOS上,传递PictureSourceType.PHOTOLIBRARY或PictureSourceType.SAVEDPHOTOALBUM以及DestinationType.NATIVE_URI将禁用任何图像修改(调整大小、质量更改、裁剪等)。由于具体实现的原因。

Kind:相机属性的静态枚举属性

代码语言:javascript
复制
Name            Type    Default Description
PHOTOLIBRARY    number  0       Choose image from the device's photo library (same as SAVEDPHOTOALBUM for Android)

CAMERA          number  1       Take picture from camera

SAVEDPHOTOALBUM number  2       Choose image only from the device's Camera Roll album (same as PHOTOLIBRARY for Android)

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/#module_camera.CameraOptions

票数 0
EN

Stack Overflow用户

发布于 2020-04-20 14:35:49

这也将解决你的问题,如果你的图片在画廊中没有显示,他们可能会在中间显示一个404类型的位图。请添加我的代码中的所有标签与您的图像,因为必须有一些元数据,以便在画廊中显示图像。注意:此标签适用于Android 9及更低版本,Android Q可以使用此标签,将您的img存放在图库values.put(MediaStore.Images.Media.RELATIVE_PATH,中的特定文件夹( "yourfoldernaeme");

代码语言:javascript
复制
      String resultPath = getExternalFilesDir(Environment.DIRECTORY_PICTURES)+ 
      getString(R.string.directory) + System.currentTimeMillis() + ".jpg";

       new File(resultPath).getParentFile().mkdir();

        try {
            OutputStream fileOutputStream = new FileOutputStream(resultPath);
            savedBitmap.compress(CompressFormat.JPEG, 100, fileOutputStream);
            fileOutputStream.flush();
            fileOutputStream.close();
        } catch (IOException e2) {
            e2.printStackTrace();
        }
        savedBitmap.recycle();

        File file = new File(resultPath);
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "Photo");
        values.put(MediaStore.Images.Media.DESCRIPTION, "Edited");
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
        values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis ());
        values.put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis());
        values.put(MediaStore.Images.ImageColumns.BUCKET_ID, file.toString().toLowerCase(Locale.US).hashCode());
        values.put(MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, file.getName().toLowerCase(Locale.US));
        values.put("_data", resultPath);

        ContentResolver cr = getContentResolver();
        cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);




        return  resultPath;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41952939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档