2014-01-07 1 views

답변

8

당신은 코어 이미지 필터를 사용할 수 있습니다 - 특히, 필터 CIMaskToAlpha

를 자세한 내용은 여기 CIFilters을 사용하는 Apple's Core Image Programming GuideRayWenderlich tutorial

편집이다 :이 필터는 검은 색 픽셀 소요 완전히 투명하게 만들고, 흰색을 불투명 한 흰색, 부분적으로 투명 한 회색으로 바꿉니다.

-(void)setImage:(UIImage *)image_ 
{ 

    UIImage *entryImage = image_; 
    CIContext *context = [CIContext contextWithOptions:nil]; 

    CIImage *image = [CIImage imageWithCGImage:[entryImage CGImage]]; 
    CIFilter *filter = [CIFilter filterWithName:@"CIMaskToAlpha"]; 
    [filter setDefaults]; 
    [filter setValue:image forKey:kCIInputImageKey]; 
    // CIImage *result = [filter valueForKey:kCIOutputImageKey]; 
    CIImage *result = [filter outputImage]; 

    CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; 

    UIImage *newImage = [UIImage imageWithCGImage:cgImage scale:[entryImage scale] orientation:UIImageOrientationUp]; 
    CGImageRelease(cgImage); 
    [super setImage:newImage]; 
} 
0

이미지는 원본 이미지의 크기가 투명한 사각형이되며 전체 검정 영역은 흰색으로 마스킹되어야합니다. 실제 정사각형 이미지 위에이 마스크 된 이미지를 오버레이하면 예상 이미지가 출력됩니다.

마스크 이미지가 준비되면 이미지 마스킹 기능을 구현하십시오.

// 바보 이유는 질문을 닫 무엇 ... 아무도 여기에 배울 허용되지 않는 Thumnail 이미지

+(UIImage*) maskImage:(UIImage *)thumbImage 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 masked = CGImageCreateWithMask([thumbImage CGImage], mask); 
    CGImageRelease(mask); 
    UIImage *maskedImage = [UIImage imageWithCGImage:masked]; 
    CGImageRelease(masked); 
    return maskedImage; 

}