Android 向け高速ビットマップぼかし
Android では、画像にぼかしフィルターを適用するのは、特に大きな画像の場合、時間がかかるプロセスになることがあります。 。これは、従来の方法では画像の各ピクセルを反復処理する必要があり、計算コストが高くなる可能性があるためです。
より高速なアルゴリズムの紹介
この記事では、従来のピクセルごとのぼかしアプローチ。このアルゴリズムは、Quasimondo から移植されたもので、ボックス ブラーとガウス ブラーの両方の要素を組み合わせています。
このアルゴリズムは、画像をスキャンするときに色の「移動スタック」を作成することによって機能します。このスタックは増分的に更新され、新しい色が右側に追加され、一番左の色が削除されます。スタック上の残りの色は、スタック上の位置に応じて調整されます。
実装の詳細
提供された Java コード スニペットは、Android でアルゴリズムを実装します。 3 つのパラメータを取ります:
アルゴリズムは 2 つのネストされたループ (行ごとに 1 つ) に分割されます。もう 1 つは列用です。各ループ内で、アルゴリズムは色の合計を計算し、スタック移動アプローチを使用して更新します。
パフォーマンスの向上
このアルゴリズムは、ピクセルに比べてぼかしのパフォーマンスを大幅に向上させます。ピクセル単位のメソッド。 640x480 の画像の場合、元のアルゴリズムではぼかしに 30 秒かかりましたが、このアルゴリズムではその時間が約 5 秒に短縮されました。
注
コード スニペットには修正が含まれています特定の場合に発生する可能性がある ArrayIndexOutOfBoundsException の問題について。 Android 11 以降の場合、例外を防ぐために Math.abs ではなく StrictMath.abs を使用してください。
以上がAndroid で高速ビットマップぼかしを実現するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。