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

And*_*eaF 31 android android-gallery android-camera

我想得到从图库加载或从相机中拾取的图像的图像扩展名(例如"jpg","png","bmp"ecc.).

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

    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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*iya 64

 filePath.substring(filePath.lastIndexOf(".")); // Extension with dot .jpg, .png
Run Code Online (Sandbox Code Playgroud)

要么

 filePath.substring(filePath.lastIndexOf(".") + 1); // Without dot jpg, png
Run Code Online (Sandbox Code Playgroud)


Aar*_*ron 22

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

 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;
}
Run Code Online (Sandbox Code Playgroud)


小智 8

getContentResolver().getType(theReceivedUri);
Run Code Online (Sandbox Code Playgroud)

上面的代码段为您提供"媒体/格式"类型


小智 7

对于“内容://”方案

fun Uri.getFileExtension(context: Context): String? {
    return MimeTypeMap.getSingleton()
        .getExtensionFromMimeType(context.contentResolver.getType(this))
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ith 6

您有多种选择来获取文件扩展名:

1- String filename = uri.getLastPathSegment();看到这个链接

2-您也可以使用此代码

 filePath .substring(filePath.lastIndexOf(".")+1);
Run Code Online (Sandbox Code Playgroud)

但这不是很好的选择。

3-如果您具有文件的URI,则使用此代码

String[] projection = { MediaStore.MediaColumns.DATA,
    MediaStore.MediaColumns.MIME_TYPE };
Run Code Online (Sandbox Code Playgroud)

4-如果您有URL,请使用此代码

public static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
    type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return type;}
Run Code Online (Sandbox Code Playgroud)


Pra*_*ran 6

亲爱的朋友,我们可以找到任何文件、图像、视频和任何文档的扩展名。为了这。

首先,我们将创建一个GetFileExtension我们想要调用的方法来查找文件、图像、数据和文档的扩展名。在这里,我取了一个名为的变量:

Uri videouri = data.getData();
Run Code Online (Sandbox Code Playgroud)

OnActivityResult 然后我调用它,

onclick(View view)
{
    GetFileExtension(videouri);
    Toast.makeText(this, "Exten: "+GetFileExtension(videouri), Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

现在创建一个类到类GetFileExtension

// Get Extension
public String GetFileExtension(Uri uri)
{
        ContentResolver contentResolver=getContentResolver();
        MimeTypeMap mimeTypeMap=MimeTypeMap.getSingleton();

        // Return file Extension
        return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
}
Run Code Online (Sandbox Code Playgroud)

由于这种方法,我们可以在java和android中找出任何文件的扩展名。我 100% 确信它对所有制作企业应用程序的人都有效。喜欢就投我一票吧~


Bor*_*jev 5

我认为这应该可以将您带到您想要的地方(我还没有尝试过,只是阅读了一下,我认为它是可行的)。

Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA, 
                           MediaStore.Images.Media.DISPLAY_NAME};
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);
    int fileNameIndex = cursor.getColumnIndex(filePathColumn[1]);
    String fileName = cursor.getString(fileNameIndex);
    // Here we get the extension you want
    String extension = fileName.replaceAll("^.*\\.", ""); 
    .........
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)