ギャラリーから読み込まれた画像またはカメラから選択された画像の画像拡張子(たとえば、「jpg」、「png」、「bmp」など)を文字列として取得したい。
このフォームのメソッドを使用して、ギャラリーから画像をロードしました
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;
}
}
filePath.substring(filePath.lastIndexOf(".")); // Extension with dot .jpg, .png
または
filePath.substring(filePath.lastIndexOf(".") + 1); // Without dot jpg, png
私はそれがかなり遅いことを知っていますが、パスに空白が含まれているときに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;
}
getContentResolver().getType(theReceivedUri);
上記のスニペットは、タイプを「メディア/フォーマット」として取得します
file:likeの拡張子を取得するには複数の選択肢があります。
1 -String filename = uri.getLastPathSegment();
こちらをご覧ください link
2-このコードも使用できます
filePath .substring(filePath.lastIndexOf(".")+1);
しかし、これは良いアプローチではありません。
3-ファイルのURIがある場合は、このコードを使用します
String[] projection = { MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.MIME_TYPE };
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;}
これで目的の場所に移動できるはずです(試したことはありませんが、少し読んでみて、うまくいくと思います)。
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();
あなたが取得する場合 content://media
結果としてUrisであり、拡張機能が必要な場合は、データベースを照会し、filePath
から抽出する必要があります。例えば。 this で
フルパスからファイル名を取得するには、最も簡単な解決策です
String filename = (new File(filePath)).getName();
親愛なる友人、私たちはあらゆるファイル、画像、ビデオ、あらゆるドキュメントの拡張子を見つけることができます。このため。
最初に、ファイル、画像、データ、ドキュメントの拡張子を見つけるために呼び出すメソッド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で任意のファイルの拡張子を見つけることができます。企業アプリを作成しているすべてのユーザーに確実に機能することを確信しています。私に投票して..
これにはMediaStore.MediaColumns.MIME_TYPE
String[] projection = { MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.MIME_TYPE };