我在图像视图上生成饼图,我想通过电子邮件发送。
如何将图像视图的图像转换为电子邮件附件,因为它在资源中不可用?
调用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(....);
在我看来,这里有很多额外的工作要做。如果您在运行时有可用的 ImageView,我们将其称为 mImageView,那么您可以执行以下操作:
Drawable mDrawable = mImageView.getDrawable();
Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();
现在您有一个位图图像,您可以将其作为附件附加到电子邮件中。我还没有对它进行原型设计,以确保 100% 确保这完全符合您的要求,但它似乎比将其保存到 SD 卡要优雅得多,这样您就可以将其流式传输回位图并将其附加到一封电邮。
如果这不起作用,请告诉我,我会尝试制作一些原型
谢谢,大卫
最简单且最适合 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"));