白い「グロー」を作成したい黒いテキストのビューがあります。スクリーンショットを取得し、色を反転し(白黒のみ)、黒を透明にマスクしてから、結果の画像を各方向に「ジッタリング」することでこれを行うことができると思います. CGImageCreateWithMaskingColors で黒をマスクしようとすると、null CGImageRef が返されます。これまでのところ、これは私が持っているものです。
//First get a screenshot into a CI image so I can apply a CI Filter
UIGraphicsBeginImageContext(self.view.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
CIImage* ciImage = [[CIImage alloc] initWithCGImage:[UIGraphicsGetImageFromCurrentImageContext() CGImage]];
UIGraphicsEndImageContext();
//Now apply the CIColorInvert filter
CIFilter* filter = [CIFilter filterWithName:@"CIColorInvert" keysAndValues:kCIInputImageKey, ciImage, nil];
ciImage = [filter valueForKey:kCIOutputImageKey];
//Now I need to get a CG image from the CI image.
CIContext* ciContext = [CIContext contextWithOptions:nil];
CGImageRef ref = [ciContext createCGImage:ciImage fromRect:[ciImage extent]];
//Now I try to mask black
const float maskingColor[6] = {0,0,0,0,0,0};
ref = CGImageCreateWithMaskingColors(ref, maskingColor); //ref is (null)
アルファチャンネルが作品を台無しにする可能性があることは知っていますが、ここにアルファチャンネルがあるとは本当に思いません。私が行っCGImageGetColorSpace(ref)
て取得したことを確認するためにkCGColorSpaceDeviceRGB
、アルファチャンネルはありません。
誰かが私が間違っているところを教えてもらえますか? 必要に応じて、UIImage、CIImage、および CGImage の違いを理解するのに役立つ簡単なコメントをいただければ幸いです。