2017-03-18 4 views
1

私はXamarin Androidアプリを持っています。ビットマップを画像フォルダに保存する(Xamarin Android)

ビットマップのような線形レイアウトを保存しようとしています。ここにコードは

public void Save() 
    { 
     LinearLayout view = FindViewById<LinearLayout>(Resource.Id.badge); 

     view.DrawingCacheEnabled = true; 
     view.BuildDrawingCache(); 
     Bitmap layout = view.GetDrawingCache(true); 

    } 

私はそれをPicturesフォルダに保存する必要があります。どのように私はこれを行うことができますか?

答えて

0

彼はC#でメモリカードにpngとしてビットマップを保存する方法を説明しました。私はあなたの問題が正しいことを理解することを願っています。

は「ここでこれが唯一のC#のものを使用してSDカードにPNGファイルとしてビットマップをエクスポートするスリムな方法である」

https://stackoverflow.com/a/29012075/6322661

0

次のコードでViewを描画するためにCanvasを使用することができます:

public Bitmap createViewBitmap(View v) 
    { 
     Bitmap bitmap = Bitmap.CreateBitmap(v.Width, v.Height, 
       Bitmap.Config.Argb8888); 
     Canvas canvas = new Canvas(bitmap); 
     v.Draw(canvas); 
     return bitmap; 
    } 

リニアレイアウトはViewの一種です。だから、リニアレイアウトビットマップを作成することができます。その後、

View v = FindViewById<LinearLayout>(Resource.Id.myLinearLayout); 
Bitmap myBitMap = createViewBitmap(v); 

そして、DCIMフォルダに保存します。

public static void saveImage(Bitmap bmp) 
{ 
     try 
     { 
      using (var os = new System.IO.FileStream(Android.OS.Environment.ExternalStorageDirectory + "/DCIM/Camera/MikeBitMap2.jpg", System.IO.FileMode.CreateNew)) 
      { 
       bmp.Compress(Bitmap.CompressFormat.Jpeg, 95, os); 
      } 
     } 
     catch (Exception e) 
     { 

     } 
    } 

enter image description here

あなたはより多くのコード情報のための私のgithubを参照することができます。

+0

あなたのコードは素晴らしいですが、私は1つの単純な問題を抱えている、私はこのエラー 'java.lang.IllegalArgumentExceptionがあります幅と高さでなければなりません> 0 ' –

+0

あなたは(V)' 'OnCreate'で' createViewBitmapを呼び出すことができます。このビューは描画されません。私のデモでは、clickイベントで関数を呼び出します。 –

+0

答えを参照してくださいhttp://stackoverflow.com/questions/3591784/getwidth-and-getheight-of-view-returns-0あなたを理解するのに役立つかもしれません。 –

関連する問題