6

私は現在、最初の Android アプリを開発しており、画像のレンダリングに問題があります。画像自体は最初は素晴らしい品質ですが、レンダリングすると品質が大幅に低下します。エッジがぎざぎざになり、見た目が悪くなります。これまでに私がそれを見せた人は誰でも、何のプロンプトも出さずに、ほとんどすぐにそれに気づきました. [左から開始、右で終了:]

サンプル画像

私が知っているすべてのことと、オンラインで調べて見つけたすべてのヒントを試していますが、何も解決していないようです.

現在、画像をビットマップとして取得し、スケーリングします。

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image);
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true);

画像を取得したら、ペイントを作成し、いくつかのスムージング アトリビュートを true に設定してから、キャンバスに描画します。

Paint smoothingPaint = new Paint();
smoothingPaint.setAntiAlias(true);
smoothingPaint.setFilterBitmap(true);
smoothingPaint.setDither(true);
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint);

それでも、上で明らかにわかるように、画質は大幅に低下します。たくさんの画像が美しくレンダリングされているのを見てきましたが、正直なところ、何が起こっているのかわからないので、どんなアドバイスも素晴らしいです!

その他の注意事項: SDK で提供されている LunarLander の例と本質的に似た、SurfaceView メソッドを使用して描画を処理しています。

再度、感謝します!

4

2 に答える 2

0

元の画像よりもはるかに少ない色に制限されていない場合(Androidには256のカラーモードがありますか?)、ディザリングを無効にすることをお勧めします。画像を拡大すると、目に見える効果があり、おそらく破壊されます。滑らかな外観。

あなたの場合、ディザリングは、アンチエイリアシングが滑らかな外観に必要な追加の色を破壊することによって、アンチエイリアシングを推測していると思います。あなたの写真の簡単なカラーカウント(左のものは約850、右のものは約140)はこれを確認します。

于 2011-01-10T10:55:47.597 に答える
0

これはおそらく、画像をある形式から別の形式に変換することに関連しています。また、Android の画面はデバイスによって異なります。別のデバイスを使用してみると、見栄えが良くなる可能性があります...ほぼ確実に、異なるトーンになります。

この問題 (およびバンディングとディザリング) に関するこのすばらしい記事を読んで、作成した画像を A​​ndroid デバイスでより適切に機能するように調整することを検討してください: http://www.curious-creature.org/2010/12/08/bitmap -品質バンディングとディザリング/

于 2011-01-10T11:03:24.217 に答える