0

私はAndroidアプリを開発していますが、奇妙な問題に直面しています。SurfaceViewで画像処理を行っています。キャンバスと次の方法を使用して、処理された画像を描画しています。

canvas.drawBitmap(image, x, y, paint)

私のSurfaceViewの背景は色付き(#3500ffff、非常に濃い緑色の一種)で、画像を描画すると、元の色が保存されていないことがわかります。ビットマップのアルファが変更された場合のように、非常にわずかな濃い緑色がかっています。

誰かがすでにこの問題に遭遇しましたか?これを修正する方法についてアイデアがありますか?

4

2 に答える 2

1

これは、16 ビットの宛先で発生します。16 ビット バッファーは 565 形式でピクセルをエンコードします。これにより、緑のチャンネルの精度が高くなり、緑がかった色合いになることがあります。32 ビットの宛先/ビットマップは、この問題を解決します。

于 2011-01-19T21:26:17.567 に答える
0

画像が透明ではないと仮定して、ペイントをどのように定義したか、透明な色にしたり、特殊効果を使用したりしないでください。ペイントにnullを使用してみてください。

もう1つは、最初に画像または背景を何を描いているのかということです。描画順序が正しいかどうか疑問に思っています。

表面を不透明に設定すると、画像の色が変わりますか?

イベントの同期に関連していると私が気付いたもう1つのことは、描画を開始する画面上で指を非常に速く動かすと、表面に描画すると半透明のスプライトが作成されることがあるということです。

于 2011-01-20T00:55:11.057 に答える