2013-10-22 280 views
0

我試圖用ios中的掩碼在自定義形狀模式下創建配置文件圖片圖像。下面就是我用來創建模板圖像:ios中的掩蔽UIImage

- (UIImage*) maskImage:(UIImage *)image 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 maskedImageRef = CGImageCreateWithMask([image CGImage], mask); 
    UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef]; 

    CGImageRelease(mask); 
    CGImageRelease(maskedImageRef); 

    // returns new image with mask applied 
    return maskedImage; 
} 

實施情況,我打電話後:*(_ profileImage是全球性的UIImage)

UIImage *maskImage = [UIImage imageNamed:@"maskProfilePicture.png"]; 

UIImage *maskedImage = [self maskImage:_profileImage withMask:maskImage]; 

和結果(圖片應該在子視圖中添加的面具,但現在看來,在圖像需要被屏蔽掩模圖像重疊):

masked image

掩蔽圖像:(或許掩蓋圖像性能AR就大錯特錯了,我在Photoshop中創建:)

Mask Image

+0

核心圖形調用看起來是正確的。你可以發佈你使用的蒙版圖像嗎?根據文檔,它必須位於DeviceGray顏色空間中,並且不得有alpha組件。 –

+0

我已經添加蒙版圖像,但它是白色的,這就是爲什麼它似乎沒有什麼:)) –

+2

天真的評論:不應該面具是黑色的? –

回答

4

核心圖形調用看起來是正確的。

將遮罩圖像更改爲黑色,您希望圖像透過,而其他地方顯示爲白色。

mask image

+0

謝謝你的幫助,它工作正常,除了給白色邊框掩蓋圖像:/ –

+0

@JasonHarwig,我如何添加掩碼到'UIView'將被旋轉,但使這個面具綁在UIView的底部,並且不會隨着UIView旋轉?我問了關於這個的問題,但是沒有人回答,也許你知道答案?謝謝。 –

+0

任何關於反向屏蔽的想法(上述過程的反向) .Means我想刪除填充區域(使它透明)和透明區域填充。 –