버튼 위로 마우스를 가져간 아이콘이 있습니다. 아이콘은 흰색으로 검은 색이며 프로그래밍 방식으로 흑색 영역을 "잘라내"싶습니다.iOS UIImage 검은 색을 프로그래밍 방식으로 투명하게 변환하는 방법은 무엇입니까?
아이콘의 검은 영역을 프로그래밍 방식으로 투명하게 변환하려면 어떻게해야합니까?
버튼 위로 마우스를 가져간 아이콘이 있습니다. 아이콘은 흰색으로 검은 색이며 프로그래밍 방식으로 흑색 영역을 "잘라내"싶습니다.iOS UIImage 검은 색을 프로그래밍 방식으로 투명하게 변환하는 방법은 무엇입니까?
아이콘의 검은 영역을 프로그래밍 방식으로 투명하게 변환하려면 어떻게해야합니까?
당신은 코어 이미지 필터를 사용할 수 있습니다 - 특히, 필터 CIMaskToAlpha
를 자세한 내용은 여기 CIFilters을 사용하는 Apple's Core Image Programming Guide과 RayWenderlich 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];
}
이미지는 원본 이미지의 크기가 투명한 사각형이되며 전체 검정 영역은 흰색으로 마스킹되어야합니다. 실제 정사각형 이미지 위에이 마스크 된 이미지를 오버레이하면 예상 이미지가 출력됩니다.
마스크 이미지가 준비되면 이미지 마스킹 기능을 구현하십시오.
// 바보 이유는 질문을 닫 무엇 ... 아무도 여기에 배울 허용되지 않는 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;
}
마스킹. –