2

私はキャンバスを初めて使っています。私は既に保存されている私のイメージを使用して、そのイメージのペイントをしたいです。その後、私はそれを保存したい。イメージをペイントしてそのイメージをAndroidに保存する方法は?

私はCanvasを使用することでそれが可能であることを知っています。私はイメージ上で絵を描くことができますが、私はそのイメージを保存する間に絵を保存しただけです。絵を描いたイメージではありません。

どのように画像にペイントしてその画像を保存するかのコードを教えてもらえますか?

ありがとうございました。

ここはSurfaceViewでペイントするためのコードです。 ソースコード:

@Override 
     public void run() { 
      //Canvas canvas = null; 
      while (_run){ 

       try{ 
        canvas = mSurfaceHolder.lockCanvas(null); 
        if(mBitmap == null){ 
         mBitmap = Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888); 
        } 

        final Canvas c = new Canvas (mBitmap); 
        //canvas.drawColor(0, PorterDuff.Mode.CLEAR); 
        c.drawColor(0, PorterDuff.Mode.CLEAR); 
        canvas.drawColor(Color.WHITE); 
//     Bitmap kangoo = BitmapFactory.decodeResource(getResources(),R.drawable.icon); 

//     if(!(DrawingActivity.imagePath==null)){ 
//      canvas.drawBitmap(DrawingActivity.mBitmap, 0, 0, null); 
//     } 
        commandManager.executeAll(c); 
        canvas.drawBitmap (mBitmap, 0, 0,null); 
       } finally { 

        mSurfaceHolder.unlockCanvasAndPost(canvas); 
       } 
      } 

     } 

私はSDカードにビットマップを保存するためにmBitmapを使用しています。

+0

あなたのコードを教えてください? – ingsaurabh

+0

更新された質問をご覧ください。 –

答えて

1

あなたの問題はあなたの全体のキャンバスに何度もあなたの図面である:大体このような

final Canvas c = new Canvas (mBitmap); // creates a new canvas with your image is painted background 
c.drawColor(0, PorterDuff.Mode.CLEAR); // this makes your whole Canvas transparent 
canvas.drawColor(Color.WHITE); // this makes it all white on another canvas 
canvas.drawBitmap (mBitmap, 0, 0,null); // this draws your bitmap on another canvas 

使用ロジック:

@Override 
public void run() { 

Canvas c = new Canvas(mBitmap); 


/* Paint your things here, example: c.drawLine()... Beware c.drawColor will fill your canvas, so your bitmap will be cleared!!!*/ 
... 

/* Now mBitmap will have both the original image & your painting */ 
String path = Environment.getExternalStorageDirectory().toString(); // this is the sd card 
OutputStream fOut = null; 
File file = new File(path, "MyImage.jpg"); 
fOut = new FileOutputStream(file); 
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut); 
fOut.flush(); 
fOut.close(); 
} 

はまた、あなたのファイルを保存するために必要な権限を追加することを忘れないでください:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

outside <application></application>マニフェストファイル。