zoukankan      html  css  js  c++  java
  • 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的值 如下图 

     

  • 相关阅读:
    python基础——协程
    Python基础并发编程——进程
    Python基础并发编程——操作系统
    python基础——socket
    Python基础——网络编程
    文件操作
    深浅拷贝和流程控制
    数据类型
    基础知识
    session和cookie
  • 原文地址:https://www.cnblogs.com/feijian/p/4742012.html
Copyright © 2011-2022 走看看