2013-02-01 50 views
1

我有2个位图,一个是:宽度为720 x 404的高度。另一种是1280x550 我用这个功能:覆盖2个不同大小的位图,合成一个大小的屏幕

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

但没有运气,现在我更糊涂了

回答

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; 
    } 
+2

喜做ü介意分享getResizeBitmap做什么?? –