2

我在图像视图上生成饼图,我想通过电子邮件发送。

如何将图像视图的图像转换为电子邮件附件,因为它在资源中不可用?

4

3 回答 3

7

调用getDrawingCache()您的图像视图。这将返回视图的缓存位图。在此处阅读文档。

将位图另存为 PNG,创建邮件并附加并发送。

Bitmap bmp = imgView.getDrawingCache();
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
bmp.compress(Bitmap.CompressFormat.PNG, 0, fos);
fos.close();

/* Create a Action_SEND intent and attach the FILENAME image to the mail. */
...
intent.putExtra(Intent.EXTRA_STREAM, FILENAME); // FILENAME is URI
...
startActivity(....);
于 2012-05-10T16:35:12.783 回答
0

在我看来,这里有很多额外的工作要做。如果您在运行时有可用的 ImageView,我们将其称为 mImageView,那么您可以执行以下操作:

Drawable mDrawable = mImageView.getDrawable();
Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();

现在您有一个位图图像,您可以将其作为附件附加到电子邮件中。我还没有对它进行原型设计,以确保 100% 确保这完全符合您的要求,但它似乎比将其保存到 SD 卡要优雅得多,这样您就可以将其流式传输回位图并将其附加到一封电邮。

如果这不起作用,请告诉我,我会尝试制作一些原型

谢谢,大卫

于 2012-05-15T20:59:40.563 回答
0

最简单且最适合 Android 的方法是使用 ACTION_SEND Intent。代码看起来像这样:

    path = "/path/to/image/"
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    Uri screenshotUri = Uri.parse(path);

    sharingIntent.setType("image/png");
    sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
    startActivity(Intent.createChooser(sharingIntent, "Share image using"));
于 2012-05-10T02:33:54.180 回答