zoukankan      html  css  js  c++  java
  • iOS 蒙板,图片叠加显示漏空部分

    懒惰了一个月了,今天写写项目里遇到的一个问题。

    图片a 和图片b相互叠加,a图片四周是白色的不规则图形,里面填充黑色。 b图片是一张正常图片。

    需求是叠加在一起,要求将b图片根据a图片的黑色形状 扣出来。

    图a:  图b:

    扣出来的效果图:

    上代码:

    -(UIImage*)maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
        CGImageRef maskRef = maskImage.CGImage;
        CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                            CGImageGetHeight(maskRef),
                                            CGImageGetBitsPerComponent(maskRef),
                                            CGImageGetBitsPerPixel(maskRef),
                                            CGImageGetBytesPerRow(maskRef),
                                            CGImageGetDataProvider(maskRef), NULL, false);
        
        CGImageRef sourceImage = [image CGImage];
        CGImageRef imageWithAlpha = sourceImage;
        //add alpha channel for images that don't have one (ie GIF, JPEG, etc...)
        //this however has a computational cost
        if (CGImageGetAlphaInfo(sourceImage) == kCGImageAlphaNone) {
    //        imageWithAlpha =CopyImageAndAddAlphaChannel(sourceImage);
        }
        
        CGImageRef masked = CGImageCreateWithMask(imageWithAlpha, mask);
    
        CGImageRelease(mask);
        
            if (sourceImage != imageWithAlpha) {
                CGImageRelease(imageWithAlpha);
            }
        
        UIImage* retImage = [UIImage imageWithCGImage:masked];
        CGImageRelease(masked);
        
        return retImage;
    }

     GitHub地址:https://github.com/zhuxinleibandou/-

  • 相关阅读:
    Win 及 Linux 查找mac地址的方法
    Maven 手动添加selenium JAR 包到本地仓库
    Cucumber 行为驱动开发简介
    Cucumber 相关资源
    测试相关资源网站
    openstack之neutron
    Python集合操作
    openstack之nova
    操作系统
    openstack之horizon部署
  • 原文地址:https://www.cnblogs.com/niit-soft-518/p/5859763.html
Copyright © 2011-2022 走看看