当前位置: 首页 > 知识库问答 >
问题:

Android Studio|在图像上设置特定颜色为透明

柴英光
2023-03-14

我的目标是使特定的颜色在图像上透明,就像在游戏的平铺中一样,在加载时忽略一种普通的背景色。

我所读到的

    添加到默认值的代码。JAVA

    ImageView log = (ImageView) findViewById(R.id.iconLogo);
    int col = ResourcesCompat.getColor(getResources(), R.color.colorTrans, null);
    log.getDrawable().mutate().setColorFilter(col, PorterDuff.Mode.SRC_IN);
    //log.getDrawable().setColorFilter(col, PorterDuff.Mode.SRC_IN); //take2
    //log.setColorFilter(R.color.colorTrans, PorterDuff.Mode.SRC_IN); //take3
    

    使图像可变提供了更好的结果,但仍然没有从图像中减去R.color.colorTrans。总体而言,在使用滤镜后,它似乎是作为整个图像上方的滤镜工作的,并且没有搜索我设置的颜色,因此颜色总是存在,并且不排除不取决于所使用的模式。

    第二种选择

     public static Bitmap getBitmapWithTransparentBG(Bitmap srcBitmap, int BgColor) {
            Bitmap result = srcBitmap.copy(Bitmap.Config.ARGB_8888, true);
            int nWidth = result.getWidth();
            int nHeight = result.getHeight();
            for (int y = 0; y < nHeight; ++y)
                for (int x = 0; x < nWidth; ++x) {
                    int nPixelColor = result.getPixel(x, y);
                    if (nPixelColor == BgColor)
                        result.setPixel(x, y, Color.TRANSPARENT);
                }
            return result;
        }
    

    仅使用一个600x600 px png文件将应用程序加载时间从1-2秒增加到8-12秒,而且不会删除特定颜色。因此不能用于多个IGAME。

    我再次需要的是在ImageView中删除/忽略图像中的特定颜色,但不要使所有图片透明。既然游戏使用没有alpha的平铺贴图,那么一定有一种方法可以在不添加alpha蒙版的情况下做到这一点。

    共有1个答案

    彭建业
    2023-03-14

    解决方案无法透明位图图像的像素。

    然而,即使在一张图片上使用它也会大幅增加加载时间。可能是。png背景已经清除,最好使用。

     类似资料:
    • 问题内容: 但是我需要一个Java等效项。我需要一个图像类型(如,,…),该图像类型可以完全透明(alpha = 0)保留此颜色。当然还有一种将其保存为文件的方法。 问题答案: import java.awt.; import java.awt.image. ; 修改代码以使每个像素透明 来源:http://www.rgagnon.com/javadetails/java-0265.html

    • 我试图从眼动跟踪结果创建一个热图(显示用户在屏幕上最频繁查看的位置)。 对于用户经常查看的像素,我想设置不透明的红色,对于不太频繁的橙色,等等...我使用红色到绿色的色阶。但是对于频率最低的像素,我希望它们不仅显示绿色,而且是透明的。 问题是,当我尝试改变颜色时,例如使用它实际上并没有根据新旧颜色将像素作为平均值着色,它只是显示一些新的、看起来奇怪的颜色。 图像与alpha RGBA值设置为50:

    • 问题内容: 我有一个DIV,我想放置一个图案作为背景。此图案是灰色的。为了使它更好一点,我想在上面放一个透明的颜色“层”。以下是我尝试过的方法,但是没有用。有没有办法将彩色图层放在背景图像上? 这是我的CSS: 问题答案: 这里是: 对此的HTML: 当然,如果其中没有其他元素,则需要为该类定义宽度和高度

    • 嘿,我正在尝试做一个程序,它加载一个彩色图像作为灰度画布,然后返回颜色点击像素。当setrgb()方法没有做它应该做的事情时,我就被困在这里了。我已经通过getRGB()从原始图像中复制了颜色,并使用setRGB()将其分配给新图像。我试图输出两个像素颜色值,但他们不一样。请帮我解决这个问题。以下是到目前为止的代码:

    • 现在我需要在它后面绘制,但我不能在它后面得到任何视图绘制。我知道如何使用属性来实现,但我不想使用此属性,因为它将忽略设置为透明的statusBar的颜色。

    • 问题内容: 我有一个Android应用程序,可将图像加载为位图并将其显示在ImageView中。问题在于图像似乎具有透明背景;这会导致图像上的某些黑色文本在黑色背景下消​​失。 如果将ImageView背景设置为白色,则可以完成这种工作,但是在图像上会出现丑陋的大边框,将其拉伸以适合父对象(实际图像在中间缩放)。 所以-我想将位图中的透明像素转换为纯色-但我不知道该怎么做! 任何帮助将不胜感激!