• android开发 图片合成


    private static Bitmap compositeImages(Bitmap srcBitmap,Bitmap dstBitmap){  
              
            Bitmap bmp = null;  
            //下面这个Bitmap中创建的函数就可以创建一个空的Bitmap  
            bmp = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());  
            Paint paint = new Paint();  
            Canvas canvas = new Canvas(bmp);  
            //首先绘制第一张图片,很简单,就是和方法中getDstImage一样  
            canvas.drawBitmap(srcBitmap, 0, 0, paint);        
              
            //在绘制第二张图片的时候,我们需要指定一个Xfermode  
            //这里采用Multiply模式,这个模式是将两张图片的对应的点的像素相乘  
            //,再除以255,然后以新的像素来重新绘制显示合成后的图像  
            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));  
            canvas.drawBitmap(dstBitmap, 0, 0, paint);  
            return bmp;  
        }  

    关于 PorterDuff.Mode.SRC_OVER 的参数说明:

    就是在图片bitmap1上面绘制图片mask时 处理两者相交时候显示的问题 

    canvas原有的图片 可以理解为背景 就是dst 
    新画上去的图片 可以理解为前景 就是src 


    Mode的值 如下图 

     

  • 相关阅读:
    练习四十:数组逆向输出
    练习三十九:数组插入排序
    Java awt组件间的继承关系
    java ArrayList
    java Scanner中的hasNext()方法
    java中String对象的存储位置
    java初始化块执行顺序
    java二维数组
    java数组变量
    Java数组初始
  • 原文地址:https://www.cnblogs.com/feijian/p/4742012.html
Copyright © 2020-2023  润新知