分享上次保存的位图

Posted

技术标签:

【中文标题】分享上次保存的位图【英文标题】:Share the last saved bitmap 【发布时间】:2013-11-22 09:03:57 【问题描述】:

我已经能够制作一个拍摄布局照片并将其保存到手机的功能。 但我无法设法在相同的功能中分享它。 这是我的代码:

public Bitmap loadBitmapFromView(View v) 
        Bitmap b = Bitmap.createBitmap(
                v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        v.layout(0, 0, v.getWidth(), v.getHeight());
        v.draw(c);

        try 
            MediaStore.Images.Media.insertImage(getContentResolver(), b, "image.png" , "screenshot");
         catch (Exception e) 
            e.printStackTrace();
        

我用以下方式拍摄照片:

final Button btn = (Button)findViewById(R.id.btnShare);
    btn.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 
            loadBitmapFromView(view);
        
    );

但我想让该按钮在单击时共享位图。 调用最后保存的位图,并分享它。 这可能吗?

【问题讨论】:

分享有什么问题?您无法检索要共享的位图还是什么? 你想在哪里分享,肯定有可能 我希望能够做出分享意图。并将最后保存的位图作为图片分享。像这样: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("文本/纯文本");意图.putExtra(意图.EXTRA_TEXT,b); startActivity(Intent.createChooser(intent, "对话框标题文本")); 【参考方案1】:

我把问题卖了。我制作了位图的 uri 并有意分享它,它起作用了。

public Bitmap loadBitmapFromView(View v) 
    Bitmap b = Bitmap.createBitmap(
            v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getWidth(), v.getHeight());
    v.draw(c);

    try 
        String path = MediaStore.Images.Media.insertImage(getContentResolver(), b, "image.png", "screenshot");
        Uri uri = Uri.parse(path);
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/png");
        intent.putExtra(Intent.EXTRA_STREAM, uri);
        startActivity(Intent.createChooser(intent , "Share"));
     catch (Exception e) 
        e.printStackTrace();
    

    return b;

【讨论】:

以上是关于分享上次保存的位图的主要内容,如果未能解决你的问题,请参考以下文章

加载的位图与jpeg中保存的位图不同(c#)

处理绘图/绘画/保存多个位图

Android - 在将位图保存到 SDCARD 以获取结果之前压缩位图

将位图保存为任何格式

将位图保存到位置

GDI+ 中出现一般错误 - 将位图保存到桌面