0

ピクセルの色の変更、透明度、最初のビットマップに別のビットマップを透明度でペイントする、ズーム、トリミング、マスクの適用など、アンドロイドのビットマップに対していくつかの操作を行う必要があります。今はJavaで作っていますが、本当に遅いです。nexus 4 で 600x600 ピクセルの画像を計算するには、約 5 秒かかります。

この操作に適したテクノロジーは何ですか?

OpenGL ES 2.0 を使用するライブラリ GPUImage を試しましたが、画像にマスクを適用しようとすると問題が発生しました。マスク サイズは元の画像として 600x600 であるため、1440000 色値の配列を渡す必要がありますが、GLSL 言語はそうではありません。そのような大きな配列をサポートします。360000 の vec4 値も大きすぎます。画像全体を texture2d オブジェクトとして渡すことができるかもしれませんが、その方法がわかりません。誰かが私にチュートリアルを教えてください。

2 番目のオプションは renderscript です。Android 2.3 を搭載した携帯電話で高速なビットマップ操作が必要なため、あまり適していませんが、全体として、3.0 以降のデバイスで速度が向上することは良いことです。問題は、2 番目のビットマップのデータ (360000 の float4 値またはビットマップ自体) を渡す方法でした。私もそれについての情報を見つけることができなかったので、誰かが私にアドバイスやチュートリアルをくれたらありがたいです.

3 番目のオプションは、NDK を使用することです。しかし、それが十分に速いかどうかはわかりません。また、一般的にndkを使用し、特にndkを使用した画像処理を開始するための適切な情報を見つけることができません。だから私は再びアドバイスやチュートリアルが必要です.

全体として、高速な画像処理の他の方法を教えてください。また、この 3 つの方法に関するアドバイスやチュートリアルを教えてください。そして、画像の操作を本当に高速にする最良の方法は何ですか?

4

1 に答える 1

2

GLES が適している場合は、画像を小さなタイルに分割し、一度に 1 つのタイルで操作します。(一部のドライバーはこのように動作します。)

于 2013-03-19T00:36:03.433 に答える