2012-05-06 20 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カードに保存するよりもはるかにエレガントなように見えるので、ビットマップにストリームを戻してEメール。

は、それが動作しないと私は何か

おかげで、 デビッド

+0

OPは画像をメールの添付ファイルとして送信したいと考えています。したがって、PNG形式が最適です。ビットマップの添付は問題ありません... – Ronnie

+0

OPはDrawableにアクセスする方法を知りたい圧縮についての言及もなく、ビットマップが問題にならない理由もなかった。それはより大きなフォーマットであり、最適化として圧縮することができます。質問は画像自体にアクセスする方法を中心に行われます –

+0

送信前にビットマップを圧縮しても問題はありません。なぜそれをしないのですか?なぜ誰かが損失のない圧縮を行い、そのサイズを小さくすることができれば、より大きな画像を送信したいでしょう。また、電子メールインテントはUriを受け取り、ビットマップ参照を受け入れません。最初に保存せずにイメージを送信することはできません。 – Ronnie

関連する問題