こんにちは EveryDaySoft代表の永田です。
今回はSwiftUIで、画像をマスキングするプログラムを紹介します。
https://github.com/daisukenagata/SwiftUI_CustomModifier
挙動
実装File
SwiftUIからMask機能がシンプルになりましたが、一つの画像などでMaskをするのはプログラムを併用する必要がありました。
CoreImageを使用。
CIFilter.colorMonochrome()
CIFilter.colorMonochromeというメソッドで、monochrome filterをかけます。
SwiftUIのImageに代入するため、このように実施しています。ob.ImageはSwiftUIで使用できるImageという型です。 UIkitはUIImageです。

2つのプロパティに計算したインスタンスを代入して、最終的にSwiftUIのImageに代入しています。
var uiImage = UIImage()
let imageView = UIImageView()
タップした際に外周か、内周をMaskするようにしています。
filter部分以外は基本的に同じです。
let currentFilterChange = CIFilter.colorInvert()
UIImageとCGImageとResizeの機能を使い、Maskをしています。
CGImageのmaskするメソッドは、昔からあります。こちらを使用してmaskの主な機能です。
/*Create an image mask. Legal values for bits per component are 1, 2, 4 and 8. * Bits per pixel must be either the same as bits per component or 8, with * exception of 8 bits per component where bits per pixel can be also 16 or 32. */ @available(iOS 2.0, *)
public init?(maskWidth width: Int, height: Int, bitsPerComponent: Int, bitsPerPixel: Int, bytesPerRow: Int, provider: CGDataProvider, decode: UnsafePointer<CGFloat>?, shouldInterpolate: Bool)
Mask機能を拡張すると、文字解析もオリジナルのエンジンが作れるかもしれません。現在はSwiftUIでコアな部分を案件で作成したので、Android Kotlinでも作成中です。
以上、貴重なお時間お読み下さいまして、誠にありがとうございます。
No responses yet