トップ «前の日記(2012-02-12) 最新 次の日記(2012-02-14)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|

2012-02-13 [iOS]Image Masking

表示したい画像とマスクの画像を用意する。

画像の説明
画像の説明

それを以下のコードでマスクした画像を取得し、描画する。

- (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];
}

実行。

画像の説明

画像のマスクについては、まだまだ、ほんの一部だと思っているので、機会があったら続きを試してみたい。

_ 関連情報

Programming with Quartz: 2D and PDF Graphics in Mac OS X
WWDCでも薦められていた書籍です。
How to Mask an Image

トップ «前の日記(2012-02-12) 最新 次の日記(2012-02-14)» 編集