短视频直播源码,iOS图片去背景

短视频直播源码,iOS图片去背景相关的代码

- (UIImage *)removeBackgroudWithImage: (UIImage *)image{
    unsigned char *targetData = malloc(sizeof(unsigned char) * image.size.width *image.size.height *4);
    UIGraphicsBeginImageContext(image.size);
    [image drawInRect: CGRectMake(0, 0, image.size.width, image.size.height)];
    unsigned char *data = malloc(sizeof(unsigned char) * image.size.width *image.size.height *4);
    [self imageRGBABytesRef: &data FromImage: image];
    
    for (int i = 0; i < image.size.width *image.size.height *4; i += 4) {
        
        UIColor *pixleColor = [UIColor colorWithRed: data[i] / 255.0  green:data[i+1] / 255.0 blue:data[i + 2] / 255.0 alpha:data[i + 3] / 255.0];
        CGFloat c, m, y ,k, a;
        [pixleColor getCyan:&c magenta:&m yellow:&y black:&k alpha:&a];//YYKit中的类别方法
        targetData[i] = data[i];
        targetData[i + 1] = data[i + 1];
        targetData[i + 2] = data[i + 2];
        if (k < 0.4) {
            targetData[i + 3] = 0;
        }else{
            targetData[i + 3] = 255;
        }
    }
    UIImage *result = [self imageFromBRGABytes: targetData imageSize: image.size];
    free(targetData);
    
    return result;
}
 
- (UIImage *)imageFromBRGABytes:(unsigned char *)imageBytes imageSize:(CGSize)imageSize {
    CGImageRef imageRef = [self imageRefFromBGRABytes:imageBytes imageSize:imageSize];
    UIImage *image = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return image;
}
 
- (CGImageRef)imageRefFromBGRABytes:(unsigned char *)imageBytes imageSize:(CGSize)imageSize {
    
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(imageBytes,
                                                 imageSize.width,
                                                 imageSize.height,
                                                 8,
                                                 imageSize.width * 4,
                                                 colorSpace,
                                                kCGImageAlphaPremultipliedLast);
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);
    
    return imageRef;
}
 
- (void)imageRGBABytesRef:(unsigned char **)data FromImage: (UIImage *)image {
    unsigned char *targetData = malloc(sizeof(unsigned char) * image.size.width *image.size.height *4);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(targetData,
                                                 image.size.width,
                                                 image.size.height,
                                                 8,
                                                 image.size.width * 4,
                                                 colorSpace,
                                                 kCGImageAlphaPremultipliedLast);
    CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
    memcpy(*data, targetData, sizeof(unsigned char) * image.size.width *image.size.height *4);
    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);
}

以上就是短视频直播源码,iOS图片去背景相关的代码, 更多内容欢迎关注之后的文章

上一篇:一对一视频聊天APP源码,根据系统显示时间


下一篇:Android Native禁止使用系统私有库详解