2015-07-28 99 views
0

我正在处理图像合并应用程序我正在使用此代码。在android中合并两个位图

Bitmap.Config config = bm1.getConfig(); 

if (config == null) { 
config = Bitmap.Config.ARGB_8888; 
} 

newBitmap = Bitmap.createBitmap(w, h, config); 

Canvas newCanvas = new Canvas(newBitmap); 

newCanvas.drawBitmap(bm1, 0, 0, null); 

Paint paint = new Paint(); 

paint.setAlpha(128); 

newCanvas.drawBitmap(bm2, 0, 0, paint); 

的合并,但它给我造成像 result 我已经像 image 1image 2

我需要这个结果result_required 这可能吗?如何 ?我尝试与阿尔法,但它实现完整的形象。 我尝试使用alpha,但它适用于完整图像。

+0

请签答案在这里: http://stackoverflow.com/questions/11740362/merge-two-bitmaps-in -android – MarkySmarky

+0

@MarkySmarky谢谢你为这个链接,但这是正常marge图像看问题的最后一个图像,我想在缩小图像点减少阿尔法。 –

回答

0

后,我的朋友找到做这样 的方式我使用这个功能

private Bitmap ProcessingBitmap() { 
    Bitmap bm1 = null; 
    Bitmap bm2 = null; 
    Bitmap newBitmap = null; 
    try { 
     bm1 = myBitmap; 
     bm2 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.bc01), bm1.getWidth(), bm1.getHeight(), true); 
     int w; 
     if (bm1.getWidth() >= bm2.getWidth()) { 
      w = bm1.getWidth(); 
     } else { 
      w = bm2.getWidth(); 
     } 
     int h; 
     if (bm1.getHeight() >= bm2.getHeight()) { 
      h = bm1.getHeight(); 
     } else { 
      h = bm2.getHeight(); 
     } 
     Bitmap.Config config = bm1.getConfig(); 
     if (config == null) { 
      config = Bitmap.Config.ARGB_8888; 
     } 
     newBitmap = Bitmap.createBitmap(w, h, config); 
     Canvas newCanvas = new Canvas(newBitmap); 

     //define half/half area 
     Rect rect1Half = new Rect(0, 0, ((bm1.getWidth() * 100)/100), 
       bm1.getHeight()); 
     Rect rect2Half = new Rect(((bm2.getWidth() * value)/100) + 1, 
       0, bm2.getWidth(), bm2.getHeight()); 

     newCanvas.drawBitmap(bm1, rect1Half, rect1Half, null); 
     Paint paint = new Paint(); 

     paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); 
     // paint.setAlpha(valueAlpha); 
     paint.setMaskFilter(new BlurMaskFilter(50, BlurMaskFilter.Blur.NORMAL)); 


     newCanvas.drawBitmap(bm2, rect2Half, rect2Half, paint); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    image.setImageBitmap(newBitmap); 
    return newBitmap; 
} 

paint.setXfermode(新PorterDuffXfermode(PorterDuff.Mode.SRC)); paint.setMaskFilter(new BlurMaskFilter(50,BlurMaskFilter.Blur.NORMAL));

是与半径模糊maskfilter主代码50