将2个不同大小的位图叠加到一个屏幕大小的位图中

时间:2013-02-01 08:48:02

标签: android canvas bitmap overlay scale

我有2个位图,一个是:宽度720 x 404高度。另一个是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;
    }

现在它向我展示了两个。覆盖。现在第一个是视频的屏幕截图,第二个是我画的画布。问题是,如果我在屏幕边缘上绘制某些内容,它将被错误地叠加(偏移),因为我的视频被拉伸为与seconc图片相同。 我该怎么办,放两张图片,但屏幕截图以几个像素的偏移开始,所以它会被正确放置?

我试过了:

  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());

但没有运气,现在我更加困惑

1 个答案:

答案 0 :(得分: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;
    }