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

在画布上绘图后,您可以在位图上调用以下内容:

        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

well i have found out the correct option. its canvas.drawARGB(255,30,30,39); give the various ARGB values and get color on the canvas enjoy :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.TRANSPARENT代替 Color.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 回答