2012-05-06 212 views

回答

7

请在您的图像视图上致电getDrawingCache()。这将返回视图的缓存位图。阅读文档here

保存位图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(....); 
+0

如何为Imageview提供URI?我的意思是FILENAME。 – DroidLearner

0

最简单和大多数Android友好的方式是使用ACTION_SEND意图。代码如下所示:

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")); 
+0

但我的形象不存储在设备,它在运行时生成的。我如何附加? – kaibuki

+0

我不知道你的代码是如何工作的,但将图像保存到内部或外部存储并获取URI并不是太痛苦。 – SeanPONeil

0

这听起来像很多额外的工作在这里进行。如果您有可用在运行时的ImageView的,我们把它叫做mImageView,那么你可以做这样的事情:

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

现在你有,你可以附加到电子邮件作为附件的位图图像。我还没有原型它使100%肯定这将做你寻找什么,但似乎很多比它保存到SD卡更优雅的,所以您可以流回来为位图,并将其连接到一封电邮。

让我知道,如果不工作,我会尽力为原型出来的东西

谢谢, 大卫

+0

的OP希望将图像发送作为邮件附件。所以'PNG'格式是最好的选择..附加的位图是出了问题... – Ronnie

+0

OP想知道如何获得访问可绘制,有没有提到压缩,也没有理由说位图是不可能的。这是一个更大的格式,可以作为优化压缩。这个问题围绕着如何访问映像本身 –

+0

在发送之前压缩位图并不会伤害它。那么为什么不这样做。为什么任何人想要发送更大的图像,当他可以对其进行无损压缩并缩小尺寸时。此外,电子邮件意向接受Uri而不是位图参考..因此,如果不先保存图像,我们将无法发送图像。 – Ronnie

相关问题