【问题标题】:Android: Drawing a Transparent Bitmap on Canvas with some colorAndroid:在画布上用一些颜色绘制透明位图
【发布时间】:2012-05-01 10:55:38
【问题描述】:

这让我很头疼,我有一个透明的 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);

但是颜色还没有设置为白色,,, 请帮帮我,我希望背景保存的图像是白色的。如果我缺少任何其他逻辑。 谢谢你的帮助。

【问题讨论】:

    标签: android android-canvas


    【解决方案1】:

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

            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。

    【讨论】:

      【解决方案2】:

      我找到了正确的选项。 它的 canvas.drawARGB(255,30,30,39); 给出各种 ARGB 值并在画布上获取颜色 享受:D

      【讨论】:

        【解决方案3】:

        在创建 Paint 对象之前调用 canvas.drawColor(color.white);如果这不起作用,请使用 canvas.drawColor(Color.WHITE, PorterDuff.Mode.DARKEN);

        【讨论】:

        • 哥们,但是同样的输出,,相应地实现了,无论如何thanx帮助,,,如果你知道任何其他方式,让我知道
        【解决方案4】:

        您可以尝试使用Color.TRANSPARENT 代替 Color.white..

        【讨论】:

        • 哥们,它已经是透明的了,这就是为什么它会变黑,,,背景默认是空的(黑色)..
        【解决方案5】:

        很好!

        如果你的图片有不好的白色(不是真的 (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);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-25
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多