title | description |
---|---|
エフェクト |
Beutlでのエフェクトの種類や適用プロセスを説明します |
描画オブジェクトにフィルタなどの処理を追加します。 以下に実装されているエフェクトを挙げます。
1 | 2 | 3 |
---|---|---|
Blur | Border | DropShadow |
InnerShadow | Dilate | Erode |
HueRotate | HighContrast | Lighting |
LumaColor | Saturate | Transform |
CvBlur | CvGaussianBlur | CvMedianBlur |
これらはSkiaやOpenCVを用いて実装されており、重複したものもあります。
エフェクトは次の3つの種類に分けられます。
- 画像フィルタ
- 色フィルタ
- カスタムエフェクト
画像フィルタとはBlurやDropShadowなどのことです。
実装はSkImageFilter
です。
画像フィルタは他の画像フィルタと合成できます。
色フィルタとはHueRotateやHighContrastなどのことです。
実装はSkColorFilter
です。
また、色フィルタは画像フィルタに変換できます。
カスタムエフェクトとはCvBlurなど他のライブラリを使ったエフェクトのことです。 カスタムエフェクトを適用するにはラスター化された画像が必要です。
例
色フィルタ
画像フィルタ
画像フィルタ
カスタムエフェクト
カスタムエフェクト
これらのエフェクトを実際の処理と同じ流れで、最適化していきます。
色フィルタを画像フィルタに変換します。
画像フィルタ
画像フィルタ
画像フィルタ
カスタムエフェクト
カスタムエフェクト
画像フィルタを他の画像フィルタと合成します。
画像フィルタx3
カスタムエフェクト
カスタムエフェクト
あとは、画像フィルタx3を適用して、ラスター化したものに カスタムエフェクトを適用すると完了です。
実際にはエフェクトによって境界線が変わったり、 キャッシュのために画像フィルタの合成は後回しにしています。