首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从从图库或相机中选取的图像中获取文件扩展名,作为字符串

从从图库或相机中选取的图像中获取文件扩展名,作为字符串
EN

Stack Overflow用户
提问于 2012-03-18 20:05:42
回答 9查看 51K关注 0票数 39

我想以字符串形式获取图像扩展名(例如"jpg“、"png”、"bmp“ecc)。从图库中加载或从相机中拾取的图像。

我已经使用此表单中的方法从库中加载图像

代码语言:javascript
复制
    private static final int SELECT_PICTURE_ACTIVITY_REQUEST_CODE = 0;
....
private void selectPicture() {
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType("image/*");
    startActivityForResult(intent, SELECT_PICTURE_ACTIVITY_REQUEST_CODE);
}
....
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch (requestCode) {
        case SELECT_PICTURE_ACTIVITY_REQUEST_CODE:
            if (resultCode == RESULT_OK) {
                Uri selectedImage = imageReturnedIntent.getData();
                String[] filePathColumn = {MediaStore.Images.Media.DATA};
                Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                if (cursor.moveToFirst()) {
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    String filePath = cursor.getString(columnIndex);
                    Bitmap bitmap = BitmapFactory.decodeFile(filePath);
                    .........
                }
                cursor.close();
            }
            break;
    }
}
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-03-18 20:25:39

代码语言:javascript
复制
 filePath.substring(filePath.lastIndexOf(".")); // Extension with dot .jpg, .png

代码语言:javascript
复制
 filePath.substring(filePath.lastIndexOf(".") + 1); // Without dot jpg, png
票数 73
EN

Stack Overflow用户

发布于 2016-04-09 17:07:05

我知道这已经很晚了,但是对于那些仍然有问题的人来说,当getContentResolver()路径包含空格时,.getType(Uri)返回null。这也解决了通过文件管理器而不是图库打开图像时的问题。此方法返回文件的扩展名(jpg、png、pdf、epub等)。

代码语言:javascript
复制
 public static String getMimeType(Context context, Uri uri) {
    String extension;

    //Check uri format to avoid null
    if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
        //If scheme is a content
        final MimeTypeMap mime = MimeTypeMap.getSingleton();
        extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uri));
    } else {
        //If scheme is a File
        //This will replace white spaces with %20 and also other special characters. This will avoid returning null values on file name with spaces and special characters.
        extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.getPath())).toString());

    }

    return extension;
}
票数 38
EN

Stack Overflow用户

发布于 2017-05-12 14:34:25

代码语言:javascript
复制
getContentResolver().getType(theReceivedUri);

上面的代码片段将类型设置为"media/format“

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

https://stackoverflow.com/questions/9758151

复制
相关文章

相似问题

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