Skip to content

Latest commit

 

History

History
66 lines (54 loc) · 2.18 KB

3.filter-effect.md

File metadata and controls

66 lines (54 loc) · 2.18 KB
title description
エフェクト
Beutlでのエフェクトの種類や適用プロセスを説明します

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

1 2 3
Blur Border DropShadow
InnerShadow Dilate Erode
HueRotate HighContrast Lighting
LumaColor Saturate Transform
CvBlur CvGaussianBlur CvMedianBlur

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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