2011-11-28 18 views
26

Sto provando a condividere immagini con Facebook, Twitter, ecc. Utilizzando SHARE INTENT da Android.Come posso trasformare una bitmap in un Uri?

ho trovato il codice per inviare un'immagine alla condivisione intento, ma questo codice ha bisogno l'URI della bitmap: fullSizeImageUri

Questo è il codice completo:

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) { } 
} 

prega, qualcuno può aiutarmi trasformare una bitmap in un Uri?

grazie

risposta

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

Parse prende sempre come argomento una stringa non un file. La prossima volta leggi i dettagli sulle funzioni o magari testarle. – Arkde

+2

scusa Arkde piccola confusione in ogni caso grazie per ricordare –

+4

non possiamo ottenere Uri senza salvare la bitmap – Prasad

0

Beh, non si può Transforma un file bitmap in un URI. Maggiori informazioni su URI here

URI è un identificatore di risorse uniformi. Ma è possibile inserire l'immagine bitmap in un URI assoluto o relativo come questo

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

allora come può raggiungere i miei bisogni? è impossibile? – NullPointerException

+0

Immagino che tu debba ripensare il tuo modo di vedere questo ... controlla APIS su Facebook e Twitter per vedere come puoi ottenere quella condivisione di immagini – Arkde

50

Qui è il blog del Colin che suggeriscono il metodo semplice per convertire bitmap a Uri Click here

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

Ma come eliminare l'immagine inserita ?? crea un sacco di immagini nella cartella .. – Noman

+4

non funziona in KitKat e soprattutto – DroidLearner

+0

non funziona su Android usura – Lunatikul

0

La soluzione di cui sopra usa il media store e memorizza l'immagine nella cartella delle immagini principali degli utenti rendendola visibile attraverso il visualizzatore di gallerie/foto. Questa soluzione la memorizzerà come un file temporaneo nei dati dell'app. In questo esempio inImage è un Bitmap e il titolo è una stringa per il nome del file immagine.

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); 
0
String picName = "pic.jpg"; 
     String PATH = Environment.getExternalStorageDirectory().getPath()+ picName; 
     File f = new File(PATH); 
     Uri yourUri = Uri.fromFile(f); 
-1

passaggio bitmap e compressFormat come (PNG, JPG, ecc ...) e la qualità delle immagini in percentuale

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); 
} 
+0

può essere nullo, quindi il tuo codice si arresterebbe in modo anomalo su Uri.parse (percorso) –

+0

il percorso di controllo è nullo o no. e dopo che sei passato a Uri –

Problemi correlati