전적으로 CIImage 필터를 사용하여 컬러 마스크와 비슷한 것을 얻으려고합니다.CIImage를 사용하여 모든 검정색 픽셀을 투명하게 만듭니다.
기본적으로 모든 검정색 픽셀을 투명하게 만들려고합니다. 나는 비 알파 픽셀들이 어떤 색깔을 가지는지 신경 쓰지 않는다. 최대 알파를 가지고있는 한.
나는이 보일 것이다 달성의 핵심 그래픽을 잘 알고있어 코드처럼 : 나는 그것을 컬러 매트릭스 필터를 사용하여 코어 이미지의 기회를 부여했지만 그것은 단지 nil
에 result
을 설정
// Convert black sections to transparent using a color mask
const CGFloat maskingColors[6] = { 0, 0, 0, 0, 0, 0 };
CGImageRef result = CGImageCreateWithMaskingColors(image, maskingColors);
CIVector 값이 1.0f
보다 크기 때문입니다.
// Create color matrix filter
CIFilter *matrix = [CIFilter filterWithName:@"CIColorMatrix"];
// Set filter properties
[matrix setValue:image forKey:kCIInputImageKey];
[matrix setValue:[CIVector vectorWithX:1.0f Y:0.0f Z:0.0f W:0.0f] forKey:@"inputRVector"];
[matrix setValue:[CIVector vectorWithX:0.0f Y:1.0f Z:0.0f W:0.0f] forKey:@"inputGVector"];
[matrix setValue:[CIVector vectorWithX:0.0f Y:0.0f Z:1.0f W:0.0f] forKey:@"inputBVector"];
[matrix setValue:[CIVector vectorWithX:255.0f Y:255.0f Z:255.0f W:0.0f] forKey:@"inputAVector"];
// Get the mapped image
CIImage *result = [matrix valueForKey:kCIOutputImageKey];
참고 : 이것이 가치있는 부분은 OSX 응용 프로그램입니다. A (심플)을 사용하여 사용자 CIFilter
당신이 그것을 필요하십니까 간단한 해결책 또는 가장 빠른 것? 그런 문제를 한 번 겪었으므로 위에 투명 픽셀을 그릴 수 없기 때문에 빠른 이미지 다시 그리기를 위해 OpenGL을 사용하는 것이 좋습니다. – Mehdzor
지금은 간단한 해결책이지만, OpenGL에 대한 힌트가 있다면 좋을 것입니다. 이상적으로 우리는이 질문의 범위를 위해 CIImage 내의 모든 것을 유지해야합니다 (다른 사람들도 도울 수 있도록). –
'CIFilter''CIMaskToAlpha' 또는'CIColorMap'을 보셨습니까? –