1

私は2つのビットマップを持っています。1つは幅720x404高さです。もう1つは1280x550です。私はこの関数を使用しました。

public Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
    Bitmap bmp2new = getResizedBitmap(bmp2, bmp1.getHeight(), bmp1.getWidth(), bmp2.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1, new Matrix(), null);
    canvas.drawBitmap(bmp2new, 0, 0, null);
    return bmOverlay;
    }

今、それは私に両方を示しています。オーバーレイ。1つ目はビデオからのスクリーンキャプチャで、2つ目は私が描いたキャンバスです。問題は、画面の余白にあるものに何かを描くと、ビデオが2番目の画像と同じように引き伸ばされるため、正しくオーバーレイされない(オフセット)ことです。両方の画像を配置するために何ができますが、画面キャプチャは数ピクセルのオフセットで開始されるため、正しく配置されますか?

私は試した:

  int left = (int)((bmp2.getWidth() - (bmp1.getWidth()*(bmp2.getHeight()/bmp1.getHeight())))/2.0);
    Bitmap bmp1new = getResizedBitmap(bmp1, bmp2.getHeight(), ((bmp2.getWidth() - (bmp1.getWidth()*(bmp2.getHeight()/bmp1.getHeight())) , bmp1.getConfig());
  Bitmap bmptest = Bitmap.createBitmap(bmp1new, left, 0,bmp1new.getWidth() - left, bmp1new.getHeight());

しかし運がなかった、そして今私はさらに混乱している

4

1 に答える 1

0

これで動作しました:

   public Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
    Bitmap bmOverlay = Bitmap.createBitmap(bmp2.getWidth(), bmp2.getHeight(), bmp1.getConfig());
    float left =(bmp2.getWidth() - (bmp1.getWidth()*((float)bmp2.getHeight()/(float)bmp1.getHeight())))/(float)2.0;
    float bmp1newW = bmp1.getWidth()*((float)bmp2.getHeight()/(float)bmp1.getHeight());
    Bitmap bmp1new = getResizedBitmap(bmp1, bmp2.getHeight(), (int)bmp1newW , bmp1.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1new, left ,0 , null);
    canvas.drawBitmap(bmp2, new Matrix(), null);
    return bmOverlay;
    }
于 2013-02-01T09:17:26.823 に答える