2011-09-10 11 views
3

でビットマップ: http://www.mail-archive.com/[email protected]/msg47520.htmlAndroidの反転私はリファレンスとして、このリンクを使用ペイントカラーフィルター を使用して、ビットマップを反転しようとしていますランタイム

が、それは絶対に全く影響を及ぼさない - ビットマップが正常に描画されますが伝えることができます私は間違って何をしているのですか?

float配列を定義:

float invert [] = { 
     -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 
     0.0f, -1.0f, 0.0f, 1.0f, 0.0f, 
     0.0f, 0.0f, -1.0f, 1.0f, 0.0f, 
     1.0f, 1.0f, 1.0f, 1.0f, 0.0f 

}。コンストラクタで

セットアップペイントドローで

ColorMatrix cm = new ColorMatrix(invert); 
    invertPaint.setColorFilter(new ColorMatrixColorFilter(cm)); 

リファレンス()メソッド

c.drawBitmap(Bitmap, null, Screen, invertPaint); 

EDIT:

:私は引き分け文で塗料の割り当てを持つことで動作するようにそれを得ることができました
ColorMatrix cm = new ColorMatrix(invert); 
invertPaint.setColorFilter(new ColorMatrixColorFilter(cm)); 
c.drawBitmap(rm.getBitmap(DefaultKey), null, Screen, invertPaint); 

しかし、これは本当に遅いです(おそらく、その複雑なマトリックスy単一のフレーム)...同じ方法で動作する理由はありますか?

EDIT2: NEVERMIND !!! LOL、問題は2つのコンストラクタがあり、そのうちの1つでカラーフィルタのみを設定していたことです...処理は依然としてCPU集中的でフレームレート問題を引き起こします

+0

。それは5x4になっていますか? –

+1

意味は分かりませんが、動作します...しかし、逆さまのビットマップを保存してスワップするだけの価値はありますが、遅いです。/ – GideonKain

答えて

4

これは古いスレッドです。

ただし、透明性を備えたアンチエイリアス画像の反転には適していません。

は次のようになります。色反転のためにかなり奇妙な行列です

float invert[] = 
{ 
-1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 
0.0f, -1.0f, 0.0f, 1.0f, 1.0f, 
0.0f, 0.0f, -1.0f, 1.0f, 1.0f, 
0.0f, 0.0f, 0.0f, 1.0f, 0.0f 
}; 
+0

これは間違いです。アルファチャンネルが赤、緑、青のチャンネルを変更することは望ましくありません(最後の列の2番目)。右のマトリックスは、ドキュメントの例として提供されています:https://developer.android.com/reference/android/graphics/ColorMatrix.html – fdermishin

関連する問題