February 24, 2012

Masking Image

CoreGraphic มีฟังก์ชั่นสำหรับช่วยทำ Masking รูปมาให้เราแล้ว นั่นก็คือ ฟังก์ชั่นชื่อ CGImageMaskCreate นั่นเอง พารามิเตอร์ของฟังก์ชั่นนี้เยอะไปหน่อย เลยนำมาจดไว้กันลืม ดังนี้

UIImage *maskImage = [UIImage imageNamed: @"mask.png"];
CGImageRef maskRef = maskImage.CGImage

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);

UIImage *image = [UIImage imageNamed: @"myImage.jpg"];
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);

return [UIimage imageWithCGImage: masked];


ส่วน input และ output ก็ตามรูปด้านล่างนี้เลย

myImage.jpg

mask.png

ภาพผลลัพธ์ที่ได้หลังจากการ Mask
เท่านี้ก็สามารถ Mask รูปภาพได้ตามต้องการแล้ว