iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
表示したい画像とマスクの画像を用意する。
それを以下のコードでマスクした画像を取得し、描画する。
- (void)awakeFromNib
{
self.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"pict.png" ofType:nil]];
self.mask = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mask.png" ofType:nil]];
self.imageMaskedWithImage = [self maskImage:self.image withMask:self.mask];
}
- (void)drawRect:(CGRect)rect
{
[self.imageMaskedWithImage drawAtPoint:CGPointMake(10.0, 10.0)];
}
- (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 masked = CGImageCreateWithMask([image CGImage], mask);
CGImageRelease(mask);
return [UIImage imageWithCGImage:masked];
}
実行。
画像のマスクについては、まだまだ、ほんの一部だと思っているので、機会があったら続きを試してみたい。