ホームページ > Java > &#&チュートリアル > Android で高速ビットマップぼかしを実現するにはどうすればよいでしょうか?

Android で高速ビットマップぼかしを実現するにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-12-07 18:40:14
オリジナル
759 人が閲覧しました

How Can We Achieve Fast Bitmap Blurring in Android?

Android 向け高速ビットマップぼかし

Android では、画像にぼかしフィルターを適用するのは、特に大きな画像の場合、時間がかかるプロセスになることがあります。 。これは、従来の方法では画像の各ピクセルを反復処理する必要があり、計算コストが高くなる可能性があるためです。

より高速なアルゴリズムの紹介

この記事では、従来のピクセルごとのぼかしアプローチ。このアルゴリズムは、Quasimondo から移植されたもので、ボックス ブラーとガウス ブラーの両方の要素を組み合わせています。

このアルゴリズムは、画像をスキャンするときに色の「移動スタック」を作成することによって機能します。このスタックは増分的に更新され、新しい色が右側に追加され、一番左の色が削除されます。スタック上の残りの色は、スタック上の位置に応じて調整されます。

実装の詳細

提供された Java コード スニペットは、Android でアルゴリズムを実装します。 3 つのパラメータを取ります:

  • sentBitmap: ブラーする入力ビットマップ
  • scale: ブラーを適用する前に画像サイズを縮小するスケール係数
  • radius:適用されるブラー半径

アルゴリズムは 2 つのネストされたループ (行ごとに 1 つ) に分割されます。もう 1 つは列用です。各ループ内で、アルゴリズムは色の合計を計算し、スタック移動アプローチを使用して更新します。

パフォーマンスの向上

このアルゴリズムは、ピクセルに比べてぼかしのパフォーマンスを大幅に向上させます。ピクセル単位のメソッド。 640x480 の画像の場合、元のアルゴリズムではぼかしに 30 秒かかりましたが、このアルゴリズムではその時間が約 5 秒に短縮されました。

コード スニペットには修正が含まれています特定の場合に発生する可能性がある ArrayIndexOutOfBoundsException の問題について。 Android 11 以降の場合、例外を防ぐために Math.abs ではなく StrictMath.abs を使用してください。

以上がAndroid で高速ビットマップぼかしを実現するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート