我希望将从图库加载或从相机中拾取的图像的图像扩展名(例如“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;
}
}
答案 0 :(得分:62)
filePath.substring(filePath.lastIndexOf(".")); // Extension with dot .jpg, .png
或强>
filePath.substring(filePath.lastIndexOf(".") + 1); // Without dot jpg, png
答案 1 :(得分:15)
我知道它已经很晚但是对于那些在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;
}
答案 2 :(得分: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();
答案 3 :(得分:5)
String script = "function genData(dataModel) { return 'hello world '+ dataModel.url.value + ' done'; }";
//"{url : {value : "abc.com",type : "string"},layout : {value : "",type : "string"}}";
String dataModel = "{url : {value : \"abc.com\",type : \"string\"},layout : {value : \"\",type : \"string\"}}";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
Invocable inv = (Invocable) engine;
result = inv.invokeFunction("genData", dataModel);
以上代码段为您提供"媒体/格式"
的类型答案 4 :(得分:4)
您有多种选择来获取文件扩展名:例如:
1 - String filename = uri.getLastPathSegment();
请参阅此link
2-您也可以使用此代码
filePath .substring(filePath.lastIndexOf(".")+1);
但这不是好事。
3 - 如果你有文件的URI,那么使用这个代码
String[] projection = { MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.MIME_TYPE };
4 - 如果您有网址,请使用此代码
public static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return type;}
答案 5 :(得分:0)
如果您得到content://media
Uris,并且您想要扩展,那么您必须像查询数据库一样查询数据库,并从filePath
中提取。例如。 this
要从完整路径中获取文件名,最简单的解决方案是
String filename = (new File(filePath)).getName();
答案 6 :(得分:0)
我认为这应该使用MediaStore.MediaColumns.MIME_TYPE
String[] projection = { MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.MIME_TYPE };
答案 7 :(得分:0)
亲爱的朋友,我们可以找到任何文件,图片,视频和任何文档的扩展名。 对此。
首先,我们将创建一个方法GetFileExtension
,我们要调用它来查找文件,图像,数据和文档的扩展名。这里我拿了一个名为:
Uri videouri = data.getData();
在OnActivity
结果中,然后我在
onclick(View view)
{
GetFileExtension(videouri);
Toast.makeText(this, "Exten: "+GetFileExtension(videouri), Toast.LENGTH_SHORT).show();
}
现在将一个类创建为类GetFileExtension
:
// Get Extension
public String GetFileExtension(Uri uri)
{
ContentResolver contentResolver=getContentResolver();
MimeTypeMap mimeTypeMap=MimeTypeMap.getSingleton();
// Return file Extension
return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
}
由于这种方法,我们可以找到java和android中任何文件的扩展名。 我100%肯定它将适用于所有正在制作企业应用程序的人。 如果你愿意,那就投票给我..
答案 8 :(得分:0)
对于“content://”sheme
fun Uri.getFileExtension(context: Context): String? {
return MimeTypeMap.getSingleton()
.getExtensionFromMimeType(context.contentResolver.getType(this))
}