2011-12-07 13 views
6

2つの異なる画像を組み合わせた画像を重ねて作成したいと考えています。この私のコードについてCanvasを使ってAndroidで2つの画像をマージするにはどうすればいいですか?

ImageView image = (ImageView) findViewById(R.id.imageView1); 
    Drawable drawableFore = getResources().getDrawable(R.drawable.foreg); 
    Drawable drawableBack = getResources().getDrawable(R.drawable.backg); 

    Bitmap bitmapFore = ((BitmapDrawable) drawableFore).getBitmap(); 
    Bitmap bitmapBack = ((BitmapDrawable) drawableBack).getBitmap(); 

    Bitmap scaledBitmapFore = Bitmap.createScaledBitmap(bitmapFore, 35, 35, true); 
    Bitmap scaledBitmapBack = Bitmap.createScaledBitmap(bitmapBack, 45, 45, true); 

    Bitmap combineImages = overlay(scaledBitmapBack, scaledBitmapFore); 

    image.setImageBitmap(combineImages); 

オーバーレイ()メソッドは

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) 
{ 
try 
{ 
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig()); 
    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp1, new Matrix(), null); 
    canvas.drawBitmap(bmp2, 0, 0, null); 
    return bmOverlay; 
} catch (Exception e) 
{ 
    // TODO: handle exception 
    e.printStackTrace(); 
    return null; 
} 
} 

ケース1である:オーバーレイ方法この場合にはnullを返します。

ケース2:しかし、前景と前景の設定で背景画像を使用しているような画像を切り替えると、コードはうまく動作します。

しかし、最初のケースは正しく動作するはずですが、そうではありません。 これがなぜ起こっているのか分かりません。

お願いします

+0

私はなぜ、どのように、今働いているのかわかりません。 – AB1209

答えて

10

2番目のビットマップのサイズが大きいために起こると思います。だからこれを試してください:

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) 
{ 
try 
{ 
    int maxWidth = (bmp1.getWidth() > bmp2.getWidth() ? bmp1.getWidth() : bmp2.getWidth()); 
    int maxHeight = (bmp1.getHeight() > bmp2.getHeight() ? bmp1.getHeight() : bmp2.getHeight()); 
    Bitmap bmOverlay = Bitmap.createBitmap(maxWidth, maxHeight, bmp1.getConfig()); 
    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp1, 0, 0, null); 
    canvas.drawBitmap(bmp2, 0, 0, null); 
    return bmOverlay; 

} catch (Exception e) 
{ 
    // TODO: handle exception 
    e.printStackTrace(); 
    return null; 
} 
} 
+0

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

+1

@Caner:チャームのように働く!ありがとうございました。 – dakshbhatt21

関連する問題