1

それは私にとって頭痛の種になりました、私は透明なpng画像を持っています、、、それをビットマップにデコードし、後でキャンバスに追加しました、

BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), picList[0] , options);
Paint p = new Paint();      
canvas.drawBitmap(mBitmap, 0, 0, p);

後でキャンバスを保存すると、画像が表示されますが、背景が黒で表示されます。白色を実装するために、次のようなコードを使用しました

Paint p = new Paint();
p.setAlpha(color.white);
p.setColor(color.white);
canvas.drawColor(color.white);
canvas.drawPaint(p);

しかし、まだ色が白に設定されていません、、、親切に助けてください、、背景の保存画像を白にしたいです。他のロジックがある場合、私は行方不明です。助けてくれてありがとう。

4

5 に答える 5

2

Canvas に描画した後、ビットマップで次のように呼び出すことができます。

        for(int x=0;x<bitmap.getWidth();x++){
            for(int y=0;y<bitmap.getHeight();y++){
                if(bitmap.getPixel(x, y)==Color.BLACK){
                    bitmap.setPixel(x, y, Color.WHITE);
                }
            }
        }

保存した画像に WHITE bg が必要な場合は、WHITE を使用してください。それ以外の場合は、TRANSPARENT を使用できます。

于 2012-05-02T04:27:29.367 に答える
1

さて私は正しいオプションを見つけました。そのcanvas.drawARGB(255,30,30,39); さまざまなARGB値を指定して、キャンバスに色を付けて楽しんでください:D

于 2012-05-02T10:03:16.360 に答える
0

良い!

画像の白が悪い場合 (実際には (255 255 255) ではない)、許容度を考慮することができます

for(int x=0;x<img.getWidth();x++)
{
    for(int y=0;y<img.getHeight();y++)
    {
        int cou = img.getPixel(x, y), tolerancy = 40//max 255, your image would be completely tranpsparent;

        if(Math.abs(Color.red(cou)-255)<tolerancy && 
           Math.abs(Color.green(cou)-255)<tolerancy &&  
           Math.abs(Color.blue(cou)-255)<tolerancy)
            paletteFond.setPixel(x, y, Color.TRANSPARENT);
    }
}
于 2013-04-10T21:53:30.797 に答える
0

Color.TRANSPARENTColor.white. の代わりに使用してみることができます。

于 2012-05-01T11:44:45.330 に答える
0

Paint オブジェクトを作成する前に、canvas.drawColor(color.white); を呼び出します。これが機能しない場合は、canvas.drawColor(Color.WHITE, PorterDuff.Mode.DARKEN); を使用してください。

于 2012-05-01T11:01:18.003 に答える