如何将Bitmap转换为Uri?

时间:2011-11-28 12:25:41

标签: android bitmap uri

我尝试使用Android中的SHARE INTENT与Facebook,Twitter等分享图片。

我找到了将图像发送到共享意图的代码,但此代码需要位图的URI:fullSizeImageUri

这是完整的代码:

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

请有人帮我将Bitmap转换为Uri吗?

感谢

6 个答案:

答案 0 :(得分:59)

以下是Colin的博客,他建议将位图转换为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);
}

答案 1 :(得分:23)

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

答案 2 :(得分:1)

上述解决方案使用媒体存储并将图像存储在用户主图像文件夹中,使其可通过图库/照片查看器查看。此解决方案将其作为临时文件存储在您的应用数据中。在此示例中,inImage是一个Bitmap,title是图像文件名称的字符串。

    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);

答案 3 :(得分:0)

好吧,你不能将位图文件转换为uri。阅读有关URI here

的更多信息

URI是统一资源标识符。但您可以将位图放在绝对或相对URI中,如此

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

答案 4 :(得分:0)

String picName = "pic.jpg";
        String PATH = Environment.getExternalStorageDirectory().getPath()+ picName;
        File f = new File(PATH);
        Uri yourUri = Uri.fromFile(f);

答案 5 :(得分:0)

传递位图和compressFormat(PNG,JPG等)和图像质量百分比

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