Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Obtener la extensión de archivo de imágenes seleccionadas de galería o cámara, como cadena

Quiero obtener como cadena la extensión de imagen (por ejemplo "jpg", "png", "bmp" ecc.) De las imágenes cargadas desde la galería o escogidas de la cámara.

He utilizado un método de esta forma para cargar imágenes de la galería

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; } } 

7 Solutions collect form web for “Obtener la extensión de archivo de imágenes seleccionadas de galería o cámara, como cadena”

  filePath.substring(filePath.lastIndexOf(".")); // Extension with dot .jpg, .png 

o

  filePath.substring(filePath.lastIndexOf(".") + 1); // Without dot jpg, png 

Creo que esto debe llegar a donde quieres (no lo he probado, sólo leer un poco y creo que funciona).

 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(); 

Usted tiene opción múltiple para conseguir la extensión del archivo: como:

1- String filename = uri.getLastPathSegment(); Ver este enlace

2- puedes usar este código también

  filePath .substring(filePath.lastIndexOf(".")+1); 

Pero esto no es un buen aproch.

3-si tiene URI de archivo a continuación, utilice este código

 String[] projection = { MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.MIME_TYPE }; 

4-si tiene URL, utilice este código

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

Sé que es bastante tarde, pero para aquellos que todavía tienen un problema cuando getContentResolver (). GetType (uri) devuelve null cuando la ruta contiene espacios en blanco. Esto también soluciona el problema cuando se abre una imagen mediante el Administrador de archivos en lugar de la galería. Este método devuelve la extensión del archivo (jpg, png, pdf, epub, etc.).

  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); 

El fragmento anterior le da el tipo como "media / format"

Si obtiene el content://media Uris como resultado y desea la extensión, entonces usted tiene que consultar la base de datos como lo hace y extraer si de filePath . Por ejemplo, con esto

Para obtener el nombre de archivo de una ruta completa, la solución más simple es

 String filename = (new File(filePath)).getName(); 

Creo que esto debería usar MediaStore.MediaColumns.MIME_TYPE

 String[] projection = { MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.MIME_TYPE }; 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.