บทช่วยสอนใช้วิธีนี้กับสองพารามิเตอร์: image
และmaskImage
คุณต้องตั้งค่าเมื่อคุณเรียกใช้เมธอด ตัวอย่างการโทรอาจมีลักษณะเช่นนี้โดยสมมติว่าเมธอดอยู่ในคลาสเดียวกันและรูปภาพอยู่ในบันเดิลของคุณ:
หมายเหตุ - ภาพไม่จำเป็นต้องมีขนาดเท่ากันด้วยซ้ำ
...
UIImage *image = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
// result of the masking method
UIImage *maskedImage = [self maskImage:image withMask:mask];
...
- (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;
}
หลังจากที่คุณระบุรหัสของคุณแล้วฉันได้เพิ่มตัวเลขเป็นความคิดเห็นเพื่อใช้อ้างอิง คุณยังมีสองทางเลือก ทั้งหมดนี้เป็นวิธีการที่คุณกำลังโทรหาที่ไหนสักแห่ง คุณไม่จำเป็นต้องสร้างภาพภายในสิ่งนี้จะช่วยลดความสามารถในการนำกลับมาใช้ใหม่ให้เป็นศูนย์
เพื่อให้รหัสของคุณทำงานได้ เปลี่ยนวิธีการ head ( 1. ) เป็น
- (UIImage *)maskImageMyImages {
จากนั้นเปลี่ยนชื่อของตัวแปรใน2.เป็น
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
วิธีนี้จะส่งคืนภาพที่มาสก์ของคุณดังนั้นคุณจะต้องเรียกวิธีนี้ในบางที่ คุณสามารถแสดงรหัสที่คุณเรียกใช้วิธีการของคุณได้หรือไม่?