web-dev-qa-db-fra.com

Comment enregistrer une image dans la galerie Android

J'essaie d'enregistrer l'image dans WathsappIMG, mais lorsque je vais dans la galerie d'images Android, l'image et l'image figurant dans le répertoire ne sont pas visibles depuis ES File Explorer

OutputStream output;
       // Find the SD Card path
        File filepath = Environment.getExternalStorageDirectory();

      // Create a new folder in SD Card
     File dir = new File(filepath.getAbsolutePath()
              + "/WhatSappIMG/");
        dir.mkdirs(); 

     // Retrieve the image from the res folder
        BitmapDrawable drawable = (BitmapDrawable) principal.getDrawable();
        Bitmap bitmap1 = drawable.getBitmap();

        // Create a name for the saved image
        File file = new File(dir, "Wallpaper.jpg" );

        try {

            output = new FileOutputStream(file);

            // Compress into png format image from 0% - 100%
            bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, output);
            output.flush();
            output.close();

        }

        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
17
Gatiko06

la galerie n’affiche pas (nécessairement) les fichiers du stockage externe.

c'est une erreur commune.

la galerie affiche les images stockées sur le fournisseur de média store

vous pouvez utiliser cette méthode pour stocker un fichier image sur un fournisseur de magasin de médias:

public static void addImageToGallery(final String filePath, final Context context) {

    ContentValues values = new ContentValues();

    values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
    values.put(Images.Media.MIME_TYPE, "image/jpeg");
    values.put(MediaStore.MediaColumns.DATA, filePath);

    context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
}
62
Tal Kanel

voici ce que vous devez entrer lorsque vous êtes sur le point de sauvegarder la photo dans la galerie

MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription);

Ce code ajoutera l'image à la fin de la galerie. alors s'il vous plaît, vérifiez votre image de la galerie, pour être sûr

7
Edess Elder

Essayez d'ajouter ceci:

MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription);

Remplissez vos coordonnées pour votre Bitmap, votre titre et votre description, ou laissez-les simplement comme "".

5
Rohodude

Vous devez ajouter une classe MediaScannerConnection à votre fonction d’enregistrement de l’image dans la galerie. Cette classe recherche de nouveaux fichiers et dossiers dans la galerie connectée à votre application. Ajoutez la classe suivante pour analyser les fichiers d’image nouvellement enregistrés ou le nouveau répertoire des images ajoutées dans la galerie ou télécharger le code source

        MediaScannerConnection.scanFile(this, new String[]{file.toString()}, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                        Log.i("ExternalStorage", "Scanned " + path + ":");
                        Log.i("ExternalStorage", "-> uri=" + uri);
                    }
                });

Lire la suite

2
Daniel Nyamasyo

Pour les boursiers Xamarin:

public static void SaveToTheGalley(this string filePath, Context context)
{
    var values = new ContentValues();
    values.Put(MediaStore.Images.Media.InterfaceConsts.DateTaken, Java.Lang.JavaSystem.CurrentTimeMillis());
    values.Put(MediaStore.Images.Media.InterfaceConsts.MimeType, "image/jpeg");
    values.Put(MediaStore.MediaColumns.Data, filePath);
    context.ContentResolver.Insert(MediaStore.Images.Media.ExternalContentUri, values);
}

Et n'oubliez pas la permission Android.permission.WRITE_EXTERNAL_STORAGE.

0
Denis Gordin

Vous devriez changer ce morceau de code

try {
        output = new FileOutputStream(file);

        // Compress into png format image from 0% - 100%
        bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, output);
        output.flush();
        output.close();
        String url = Images.Media.insertImage(getContentResolver(), bitmap1,
        "Wallpaper.jpg", null);
    }

    catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
0
Kanak Sony