43 votes

Comment puis-je transformer un bitmap en URI ?

J'essaie de partager des images avec Facebook, Twitter, etc. en utilisant SHARE INTENT d'Android.

J'ai trouvé du code pour envoyer une image à l'intention de partage, mais ce code a besoin de l'URI du bitmap : fullSizeImageUri

Voici le code complet :

private void startShareMediaActivity(Bitmap image) {
    boolean isVideo=false;
    String mimeType="bmp";
    Uri fullSizeImageUri=null;
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType(mimeType);
    intent.putExtra(Intent.EXTRA_STREAM, fullSizeImageUri);
    try {
        startActivity(Intent.createChooser(intent, (isVideo ? "video" : "image")));
    } catch (android.content.ActivityNotFoundException ex) { }
}

Comment transformer un bitmap en URI ?

89voto

Ajay Points 1772

Voici le Blog de Colin qui propose la méthode simple pour convertir bitmap en Uri Cliquez ici

public Uri getImageUri(Context inContext, Bitmap inImage) {
  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
  String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
  return Uri.parse(path);
}

22voto

KK_07k11A0585 Points 1131
String FILENAME = "image.png";
String PATH = "/mnt/sdcard/"+ FILENAME;
File f = new File(PATH);
Uri yourUri = Uri.fromFile(f);

4voto

ocross Points 572

La solution ci-dessus utilise une mémoire multimédia et stocke l'image dans le dossier principal de l'image de l'utilisateur, ce qui la rend visible à travers la galerie/visionneuse de photos. Cette solution le stockera sous forme de fichier temporaire dans les données de vos applications. Dans cet exemple, inImage est un Bitmap et title est une chaîne de caractères pour le nom du fichier image.

    File tempDir= Environment.getExternalStorageDirectory();
    tempDir=new File(tempDir.getAbsolutePath()+"/.temp/");
    tempDir.mkdir();
    File tempFile = File.createTempFile(title, ".jpg", tempDir);
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    byte[] bitmapData = bytes.toByteArray();

    //write the bytes in file
    FileOutputStream fos = new FileOutputStream(tempFile);
    fos.write(bitmapData);
    fos.flush();
    fos.close();
    return Uri.fromFile(tempFile);

1voto

Pankaj Talaviya Points 1218

passer bitmap et compressFormat comme (PNG, JPG, etc...) et la qualité de l'image en pourcentage

public Uri getImageUri(Bitmap src, Bitmap.CompressFormat format, int quality) {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    src.compress(format, quality, os);

    String path = MediaStore.Images.Media.insertImage(getContentResolver(), src, "title", null);
    return Uri.parse(path);
}

0voto

Arkde Points 1820

Eh bien, vous ne pouvez pas transformer un fichier bitmap en URI. En savoir plus sur L'URI ici

URI est un identifiant de ressource uniforme. Mais vous pouvez placer le bitmap dans un URI absolu ou relatif comme ceci

Absolute: http://android.com/yourImage.bmp
Relative: yourImage.bmp 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X