20

画像をビットマップとして読み込み、ImageView に表示する Android アプリがあります。問題は、画像の背景が透明に見えることです。これにより、画像の黒いテキストの一部が黒い背景に対して消えます。

ImageView の背景を白に設定すると、そのように機能しますが、親に合わせて引き伸ばされた画像に醜い大きな境界線が表示されます (実際の画像は中央で拡大縮小されます)。

だから-ビットマップの透明ピクセルを単色に変換したいのですが、その方法がわかりません!

どんな助けでも大歓迎です!

ありがとうクリス

4

2 に答える 2

36

画像をリソースとして含める場合は、gimpなどのプログラムで自分で画像を編集するのが最も簡単です。そこに背景を追加して、それがどのように見えるかを確認し、ロードされるたびに画像を変更する処理能力を使用する必要はありません.

自分で画像を制御できない場合は、Bitmapが呼び出されたと仮定して、次のようにして画像を変更できますimage

Bitmap imageWithBG = Bitmap.createBitmap(image.getWidth(), image.getHeight(),image.getConfig());  // Create another image the same size
imageWithBG.eraseColor(Color.WHITE);  // set its background to white, or whatever color you want
Canvas canvas = new Canvas(imageWithBG);  // create a canvas to draw on the new image
canvas.drawBitmap(image, 0f, 0f, null); // draw old image on the background
image.recycle();  // clear out old image 
于 2013-01-25T23:46:14.490 に答える
7

各ピクセルをループして、透明かどうかを確認できます。

このようなもの。(未テスト)

        Bitmap b = ...;
        for(int x = 0; x<b.getWidth(); x++){
            for(int y = 0; y<b.getHeight(); y++){
                if(b.getPixel(x, y) == Color.TRANSPARENT){
                    b.setPixel(x, y, Color.WHITE);
                }
            }
        }
于 2013-01-25T23:03:38.087 に答える