android - ¿Cómo puedo transformar un Bitmap en un Uri?
(6)
Aquí está el Blog de Colin que sugiere el método simple para convertir mapa de bits a Uri. Haga clic aquí
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);
}
Estoy tratando de compartir imágenes con Facebook, Twitter, etc. utilizando SHARE INTENT
de Android.
Encontré un código para enviar una imagen al intento de compartir, pero este código necesita la URI del mapa de bits: fullSizeImageUri
Este es el código 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) { }
}
Por favor, ¿puede alguien ayudarme a transformar un Bitmap en un Uri?
Gracias
Bueno, no puedes transformar un archivo de mapa de bits en un uri. Lea más sobre URI here
URI es un identificador uniforme de recursos. Pero puede colocar el mapa de bits en un URI absoluto o relativo como este
Absolute: http://android.com/yourImage.bmp
Relative: yourImage.bmp
La solución anterior utiliza la tienda de medios y almacena la imagen en la carpeta de imágenes principal de los usuarios para que pueda verse a través del visor de galería / foto. Esta solución lo almacenará como un archivo temporal en los datos de sus aplicaciones. En este ejemplo, inImage es un mapa de bits y el título es una cadena para el nombre del archivo de imagen.
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);
pase bitmap y compressFormat como (PNG, JPG, etc ...) y calidad de imagen en porcentaje
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);
}
String FILENAME = "image.png";
String PATH = "/mnt/sdcard/"+ FILENAME;
File f = new File(PATH);
Uri yourUri = Uri.fromFile(f);
String picName = "pic.jpg";
String PATH = Environment.getExternalStorageDirectory().getPath()+ picName;
File f = new File(PATH);
Uri yourUri = Uri.fromFile(f);