Android:共享位图未保存到SD

时间:2012-01-26 12:53:33

标签: java android bitmap

我有一个应用程序,它截取屏幕截图并将其与共享意图共享。每次用户想要简单地共享图像时,不是保存多个图像。以下是我用于保存到SD的图像的代码

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/png");

dir = "file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Folder/" + location;
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(dir));

startActivity(Intent.createChooser(share, "Share Image"));

但是我无法弄清楚如何简单地保存位图,例如......

share.putExtra(Intent.EXTRA_STREAM, theBitmap);

有没有办法在不保存图像的情况下执行此操作?

由于

3 个答案:

答案 0 :(得分:4)

我最终做的是将一个“Temp”图像保存到SD / Phone并且每次都覆盖。

答案 1 :(得分:1)

尝试使用这个:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
Uri uri = Uri.parse("android.resource://com.your.app/drawable/" + yourimage);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.putExtra(Intent.EXTRA_TEXT, shareImage);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Send your image"));

此代码可以很好地发送我在我的应用中使用的drawable。没有图片保存在SD卡上。唯一的问题是它不能与某些社交应用程序一起使用:/

答案 2 :(得分:-1)

是的,您可以发送图像而无需将其另存为文件。只需查看您发布的代码,我就不知道如何发送图像,但是您使用以下内容转换文件:

                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                byte[] data;
                if(yourBitmap!=null){
                yourBitmap.compress(CompressFormat.PNG, 75, bos);
                }else if (yourBitmap==null){
                    Log.w("Image going to server is null","Lost in memory");
                }
                try{
                data = bos.toByteArray();

我不知道您是否通过应用程序将图像发送给其他用户,或者我将如何使用它上传到服务器。当您完成图像处理后,您可以将其全部取消。

                bos = null;
                data = null;
                yourBitmap = null;