[swift] UIImageをマスク用画像でマスキングする方法
目次
Swift4
Swift4では以下のコード
import UIKit func maskImage(image: UIImage, maskImage: UIImage) -> UIImage { let maskRef: CGImage = maskImage.cgImage! let mask: CGImage = CGImage( maskWidth: maskRef.width, height: maskRef.height, bitsPerComponent: maskRef.bitsPerComponent, bitsPerPixel: maskRef.bitsPerPixel, bytesPerRow: maskRef.bytesPerRow, provider: maskRef.dataProvider!, decode: nil, shouldInterpolate: false)!; let maskedImageRef: CGImage = image.cgImage!.masking(mask)! let maskedImage:UIImage = UIImage(cgImage: maskedImageRef, scale: image.scale, orientation: image.imageOrientation) return maskedImage }
Swift2.2
Swift2.2 では以下のコード
func maskImage(image: UIImage, maskImage: UIImage) -> UIImage { let maskRef: CGImageRef = maskImage.CGImage! let mask: CGImageRef = CGImageMaskCreate( CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), nil, false)!; let maskedImageRef: CGImageRef = CGImageCreateWithMask(image.CGImage, mask)!; let maskedImage: UIImage = UIImage(CGImage: maskedImageRef); return maskedImage; }
使い方:
let image = UIImage(named: "image.png")! let mask = UIImage(named: "mask.png")! let maskedImage = self.maskImage(image, maskImage: mask) let imageView = UIImageView(image: maskedImage) self.view.addSubview(imageView)
マスク用の画像は白黒が良い。
黒:残すところ
白:削るところ