2012-02-26 12 views
2

私はスクリーンショットとして生成されたUIImageを持っています。私のイメージは白のみになり、私はそれがCGImageCreateMaskingColorsを使用して、白だ場所に透明にするイメージを持っているしたいのですが私はどのように色 '白'を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]; 

:私は、次のコードでこのオブジェクトを追加しています。

誰かが私を助けてくれることを願っています。

答えて

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

私はぼんやりした結果がどうなるか分かりません。ここに画像を投稿できますか?多分、あなたはcolorMaskingを調整しようとすることができます。 {225,255,225,255,225,255}。 – tommyli

+0

は、トランスペアレントビューのイメージをドキュメントディレクトリに保存すると、私の背景が白くなっていることが判明しました。それで、エッジの周りのぼやけた効果がこれによって引き起こされることがあります。 – BarryK88

関連する問題