日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服

綠幕摳圖代碼實(shí)現(xiàn)和使用P圖軟件完成綠幕摳圖的步驟是一致的,總共包括四步:

1、初始化前景圖,需要P圖的部分填充為純色背景(綠幕/藍(lán)幕)

2、把純色部分的bitmap設(shè)置為透明

3、準(zhǔn)備背景圖(尺寸和前景圖一致),前景圖疊加到背景圖生成目標(biāo)圖片

4、導(dǎo)出目標(biāo)圖片,完成摳圖功能

 

純色部分的bitmap設(shè)置為透明

- (CIFilter*) chromaKeyFilterHuesFrom:(CGFloat)minHue to:(CGFloat)maxHue{
     // 1
     const unsigned int size = 64;
     const size_t cubeDataSize = size * size * size * 4;
     NSMutableData* cubeData = [[NSMutableData alloc] initWithCapacity:
                                (cubeDataSize * sizeof(float))];
     // 2
     for (int z = 0; z < size; z++) {
         CGFloat blue = ((double)z)/(size-1);
         for (int y = 0; y < size; y++) {
             CGFloat green = ((double)y)/(size-1);
             for (int x = 0; x < size; x++) {
                 CGFloat red = ((double)x)/(size-1);
               
                 // 3
                 CGFloat hue = [self hueFromRed:red green:green blue:blue];
                 float alpha = (hue >= minHue && hue <= maxHue) ? 0 : 1;
               
                 // 4
                 float premultipliedRed = red * alpha;
                 float premultipliedGreen = green * alpha;
                 float premultipliedBlue = blue * alpha;
                 [cubeData AppendBytes:&premultipliedRed length:sizeof(float)];
                 [cubeData appendBytes:&premultipliedGreen length:sizeof(float)];
                 [cubeData appendBytes:&premultipliedBlue length:sizeof(float)];
                 [cubeData appendBytes:&alpha length:sizeof(float)];
             }
         }
     }

    // 5
     CIFilter* chromaKeyFilter = [CIFilter filterWithName:@"CIColorCube"];
     [chromaKeyFilter setValue:@(size) forKey:@"inputCubeDimension"];
     [chromaKeyFilter setValue:cubeData forKey:@"inputCubeData"];
     return chromaKeyFilter;
}

獲取每個(gè)bitmap的顏色值

- (CGFloat) hueFromRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue {
    UIColor* color = [UIColor colorWithRed:red green:green blue:blue alpha:1];
    CGFloat hue, saturation, brightness;
     [color getHue:&hue saturation:&saturation brightness:&brightness alpha:nil];
    return hue; 
}

前景圖疊加到背景圖,生成目標(biāo)圖片

- (CIImage *)outputImage{
     CIFilter* chromaKeyFilter = [self chromaKeyFilterHuesFrom:0.3 to:0.4];
     CIImage *myImage = [[CIImage alloc] initWithImage:self.inputFilterImage];
     [chromaKeyFilter setValue:myImage forKey:kCIInputImageKey];

     CIFilter* compositor = [CIFilter filterWithName:@"CISourceOverCompositing"];

     CIImage* souceCIImage = chromaKeyFilter.outputImage;
     [compositor setValue:souceCIImage forKey:kCIInputImageKey];

     CIImage *backgroundCIImage = [[CIImage alloc] initWithImage:self.backgroundImage];
     [compositor setValue:backgroundCIImage forKey:kCIInputBackgroundImageKey];

     return compositor.outputImage; 
}

最后,把生成的圖片保存到系統(tǒng)相冊(cè),完成摳圖功能。

分享到:
標(biāo)簽:框架 CoreImage
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定