Innanzitutto che parametro bisogna avere per ottenere il Path dall'Uri restituito da data.getData()?
La funzione deve restituire una String e avere come parametro un Uri.
Proviamo...
private String UriToPath(Uri foundUri){
Cursor crs=getApplicationContext().getContentResolver().query(foundUri,null,null,null,null);
crs.moveToFirst();
int indice=crs.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
String s=crs.getString(indice);
return s;
}
Dovrebbe funzionare.Ora vediamo per la trasformazione del Path in Bitmap.
La funzione restituisce Bitmap, e deve avere come parametro Path.
private Bitmap PathToBitmap(String path){
Bitmap bmp= BitmapFactory.decodeFile(path);
return bmp;
}
C'era un modo per ricavare bmp più piccole e meno pesanti, e su quello mi devo esercitare dopo perché non sono sicuro di ricordarlo a memoria.Ora la funzione che ha per tipo String e per parametro Bitmap per la trasformazione di Bitmap in una String.
private String BitmapToString(Bitmap bmp){
ByteArrayOutputStream stream=new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG,80,stream);
byte[] b =stream.toByteArray(b);
String s= Base64.encodeToString(b,Base64.DEFAULT);
return s;
}
Ora mettiamole in sequenza facendo scrivere la sringa in LogCat.Sì, ho testato funzione per funzione e funzionano tutte.
Potrei tenere una libreria per la conversione, da inserire in ogni mio programma per il quale ce ne fosse l'utilità.
Nessun commento:
Posta un commento