2012-05-06 195 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

相關問題