2017-03-29 16 views
0

私は、水平方向と複数のImageViewを持つ線形レイアウトを持っています。これらの画像を使用して1つのビットマップを作成するにはどうすればよいですか?このよう複数の画像を結合して合成する方法

enter image description here

以上6枚の画像がある場合は、残りの画像は、次の行に進みます。 この1つは水平のために働いている:

 Bitmap[] parts = new Bitmap[4]; 
     Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(result); 
     Paint paint = new Paint(); 
     for (int i = 0; i < parts.length; i++) { 
      canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i/2), paint); 
     } 
+1

宿題:次の行を処理するコードを展開します。 – greenapps

答えて

0

あなたは、以下の方法でLienarLayoutを取る必要があります。

public static Bitmap loadBitmapFromView(View v) { 
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
Canvas c = new Canvas(b); 
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); 
v.draw(c); 
return b; 
} 

がビューからBitmapを取るために、上記の方法であなたのLienarLayoutオブジェクトを渡します。

+0

でもLLは水平方向です。リニアレイアウトで6つ以上のイメージがある場合、残りのラインは次のラインに進みます。 –

+0

だから、それぞれの行のビットマップを取る必要がありますし、次に組み合わせて1つのビットマップを作る。 –

関連する問題