24/7 twenty-four seven

iOS/OS X application programing topics.

マスクを使って画像を切り抜く

How to Mask an Image [iOS developer:tips];

白黒の画像をマスクとして、画像を任意の形に切り抜くことが出来ます。
上記の例はとても単純ですが、マスク画像を工夫すれば、複雑な形の画像もプログラムから簡単に作成できます。

//元画像
UIImage *iconImage = [UIImage imageNamed:@"apple-touch-icon.png"];
//マスク画像
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];

//マスク画像をCGImageに変換する
CGImageRef maskRef = maskImage.CGImage; 
//マスクを作成する
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);

//マスクの形に切り抜く
CGImageRef masked = CGImageCreateWithMask([iconImage CGImage], mask);
//CGImageをUIImageに変換する
UIImage *maskedImage = [UIImage imageWithCGImage:masked];

CGImageRelease(mask);
CGImageRelease(masked);