una tipo programas para ocultar jpg imagenes imagen fotos formato extension como celular carpeta cambiar archivos app aplicacion abrir android android-camera android-gallery

android - tipo - Obtenga la extensión de archivo de las imágenes seleccionadas de la galería o cámara, como una cadena



formato de imagen para celular (8)

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

He utilizado un método en este formulario 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; } }


Creo que esto debería llevarte a donde quieres (no lo he probado, solo leí 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();


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

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


Estimado amigo, podemos encontrar la extensión de cualquier archivo, imagen, video y cualquier documento. para esto.

Primero, crearemos un método GetFileExtension que queremos llamar para encontrar la extensión de un archivo, imagen, datos y documentos. Aquí tomé una variable llamada:

Uri videouri = data.getData();

en OnActivity Result entonces lo invoco en,

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

Ahora haga una clase a clase GetFileExtension :

// Get Extension public String GetFileExtension(Uri uri) { ContentResolver contentResolver=getContentResolver(); MimeTypeMap mimeTypeMap=MimeTypeMap.getSingleton(); // Return file Extension return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri)); }

Debido a este método, podemos averiguar la extensión de cualquier archivo en java y en android. Estoy 100% seguro de que funcionará para todos los que están haciendo una aplicación corporativa. Si te gusta entonces vota por mí ..


Sé que es bastante tarde, pero para aquellos que todavía tienen un problema cuando getContentResolver (). GetType (uri) devuelve un valor nulo cuando la ruta contiene espacios en blanco. Esto también resuelve el problema cuando una imagen se abre a través del 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; }


Si obtiene content://media Uris como resultado y desea la extensión, debe consultar la base de datos como lo hace y extraerla de filePath . Eg con this

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

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


Usted tiene varias opciones para obtener la extensión del archivo: como:

1- String filename = uri.getLastPathSegment(); ver este link

2- puedes usar este código también

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

Pero este no es un buen aproch.

3-Si tiene un URI de archivo, use este Código

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

4-Si tienes una URL, usa 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;}


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

o

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


getContentResolver().getType(theReceivedUri);

El fragmento anterior le da el tipo como "medio / formato"