2012-02-26 6 views
2

나는 스크린 샷으로 생성 된 UIImage 있어요. 나는 다음과 같은 코드로이 객체를 추가 해요 :어떻게하면 '흰색'UIImage에서 투명하게 변경할 수 있습니다

self.view.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.0]; 
    drawImage.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.0]; 

    UIGraphicsBeginImageContext(self.view.bounds.size); 
    [drawImage.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    CGImageRef rawImageRef=viewImage.CGImage; 
    const float colorMasking[6] = {255,255,255,255,0,0}; 
    CGImageCreateWithMaskingColors(rawImageRef, colorMasking); 
    UIImage *newImage = [UIImage imageWithCGImage:rawImageRef]; 

내 이미지는 흰색집니다, 나는 그것을 CGImageCreateMaskingColors를 사용하여 흰색의 장소에서 투명하게 할 수있는 이미지를 가지고 싶습니다 그러나.

누군가 나를 도울 수 있기를 바랍니다.

답변

5
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 1.0); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

CGImageRef rawImageRef = viewImage.CGImage; 
const float colorMasking[6] = {255, 255, 255, 255, 255, 255}; 
UIGraphicsBeginImageContext(viewImage.size); 
CGImageRef maskedImageRef = CGImageCreateWithMaskingColors(rawImageRef, colorMasking); 
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, viewImage.size.height); 
CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); 

CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, viewImage.size.width, viewImage.size.height), maskedImageRef); 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
CGImageRelease(maskedImageRef); 
UIGraphicsEndImageContext(); 
+0

기능은 작동하지만 가장자리가 매우 흐릿합니다. – BarryK88

+0

나는 모호한 결과에 대한 비용을 확신하지 못한다. 결과 이미지를 게시 할 수 있습니까? 어쩌면 색상을 조정하려고 할 수 있습니다. {225, 255, 225, 255, 225, 255}. – tommyli

+0

투명 뷰의 이미지를 문서 디렉토리에 저장하면 내 배경이 흰색으로 변합니다. 따라서 모서리 주변의 흐릿한 효과가이 때문일 수 있습니다. – BarryK88

관련 문제