メインコンテンツまでスキップ
バージョン: 1.x

エフェクト

描画オブジェクトにフィルタなどの処理を追加します。 以下に実装されているエフェクトを挙げます。

123
BlurBorderDropShadow
InnerShadowDilateErode
HueRotateHighContrastLighting
LumaColorSaturateTransform
CvBlurCvGaussianBlurCvMedianBlur

これらはSkiaやOpenCVを用いて実装されており、重複したものもあります。

エフェクトの適用プロセス​

エフェクトは次の3つの種類に分けられます。

  1. 画像フィルタ
  2. 色フィルタ
  3. カスタムエフェクト

画像フィルタとはBlurやDropShadowなどのことです。 実装はSkImageFilterです。 画像フィルタは他の画像フィルタと合成できます。

色フィルタとはHueRotateやHighContrastなどのことです。 実装はSkColorFilterです。 また、色フィルタは画像フィルタに変換できます。

カスタムエフェクトとはCvBlurなど他のライブラリを使ったエフェクトのことです。 カスタムエフェクトを適用するにはラスター化された画像が必要です。

例

色フィルタ
画像フィルタ
画像フィルタ
カスタムエフェクト
カスタムエフェクト

これらのエフェクトを実際の処理と同じ流れで、最適化していきます。

色フィルタを画像フィルタに変換します。

画像フィルタ
画像フィルタ
画像フィルタ
カスタムエフェクト
カスタムエフェクト

画像フィルタを他の画像フィルタと合成します。

画像フィルタx3
カスタムエフェクト
カスタムエフェクト

あとは、画像フィルタx3を適用して、ラスター化したものに カスタムエフェクトを適用すると完了です。

実際にはエフェクトによって境界線が変わったり、 キャッシュのために画像フィルタの合成は後回しにしています。