透明像素由零的alpha值和任意的红色、绿色和蓝色值组成。因此,即使一个像素是透明的,它仍然有一种颜色。
我现在想创建一个完全透明的位图,但有一个特定的颜色(例如白色)。但我尝试的每一种方法都会得到一个黑色的透明位图(就像png文件中的一样)。
这对我来说非常重要,因为我通过画布在位图上呈现抗锯齿文本。在角落上,半透明像素变得更暗。我想做的是事先用与文本相同的颜色填充位图或画布,但透明。
我的密码
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
//bitmap manipultion here
Canvas canvas = new Canvas(bitmap);
//canvas manipulation here
canvas.drawText(gText, 0, bounds.height(), paint);
到目前为止我试过的(红色
、绿色
和蓝色
都不是零):
画布操作:
这一点与PorterDuff的作用相同。模式SRC_超过。我想,SRC
会用源alpha和源颜色覆盖目标,还是我错了?
canvas.drawColor(Color.argb(0, red, green, blue), PorterDuff.Mode.SRC);
我也试过这个,但它会生成一个透明的黑色位图。
paint.setColor(Color.argb(0, red, green, blue));
canvas.drawRect(0, 0, w, h, paint);
位图操作:
这不会改变透明(黑色)位图上的任何内容
bitmap.eraseColor(Color.argb(0, red, green, blue));
我尝试了这一行,希望第一行用我的颜色覆盖所有内容,第二行使其透明。但它提供了一个透明的黑色位图。
bitmap.eraseColor(Color.argb(255, red, green, blue));
bitmap.eraseColor(Color.argb(0, red, green, blue));
这个还生成一个透明的黑色位图
for(int x = 0; x<bitmap.getWidth(); x++){
for(int y = 0; y<bitmap.getHeight(); y++){
bitmap.setPixel(x, y, Color.argb(0, red, green, blue));
}
}
我能做些什么来生成一个非黑色和透明的位图?或者它甚至是可能的(因为自动压缩)?
尝试将以下内容添加到清单属性中的活动:
android:hardwareAccelerated="false"
如果硬件加速删除透明位图,至少你会得到一些答案
在最后一次尝试中,尝试将红色、绿色和蓝色全部替换为255,这应该等于白色(红色、绿色、蓝色==白色,255是最大值。
for(int x = 0; x<bitmap.getWidth(); x++){
for(int y = 0; y<bitmap.getHeight(); y++){
bitmap.setPixel(x, y, Color.argb(0, 255, 255, 255));
}
}
问题内容: 但是我需要一个Java等效项。我需要一个图像类型(如,,…),该图像类型可以完全透明(alpha = 0)保留此颜色。当然还有一种将其保存为文件的方法。 问题答案: import java.awt.; import java.awt.image. ; 修改代码以使每个像素透明 来源:http://www.rgagnon.com/javadetails/java-0265.html
问题内容: 我正在处理图像,并想确定一组像素是否更接近白色或黑色。 因此,给定一组 颜色/像素 ,如何确定它们接近白色还是黑色? 我尝试了一些笨拙的算法,有人知道我该怎么做吗? 问题答案: 我要说的是,您可以先将颜色转换为灰度,然后检查它是否更接近黑色或白色。 首先将RGB颜色值转换为通过以下公式计算亮度 然后检查该值是接近于0还是255,并相应地选择黑色或白色 请注意,如果未对颜色空间进行伽玛压
在Canvas绘图时,可以通过绘制上下文的strokeStyle属性和fillStyle属性来设置图形的描边颜色和填充颜色。默认颜色为不透明的黑色。 strokeStyle属性和fillStyle属性可以被设置为任意有效的CSS颜色字符串,可以使用颜色名称、十六进制RGB颜色、RGB、RGBA、HSL、HSLA颜色中的任意一种。 在使用RGBA或HSLA颜色时,可以通过设置其透明度(alpha)来
问题内容: 我正在读取BufferedImage中的像素颜色,如下所示: 现在,除了具有透明性的png之外,此方法都可以正常工作。我发现如果x,y指的是没有颜色的透明像素,我仍会读取一种颜色,通常与图像中其他位置使用的颜色相同。 如何检测像素实际上是透明的而不是彩色的? 谢谢 问题答案: 结果也是一个介于0(完全透明)到255(完全不透明)之间的值。
我的目标是使特定的颜色在图像上透明,就像在游戏的平铺中一样,在加载时忽略一种普通的背景色。 我所读到的 我添加到默认值的代码。JAVA 使图像可变提供了更好的结果,但仍然没有从图像中减去。总体而言,在使用滤镜后,它似乎是作为整个图像上方的滤镜工作的,并且没有搜索我设置的颜色,因此颜色总是存在,并且不排除不取决于所使用的模式。 第二种选择 仅使用一个600x600 px png文件将应用程序加载时间
我正在尝试将状态栏的颜色改为半透明的黑色(Android7.0),但我得到的只是一个灰色状态栏。每当我尝试将状态栏设置为透明或半透明时,我就会得到这种灰色。但纯色很好用。我使用的是折叠式工具栏布局,我知道我可以使用statusBarScrim,但这个功能也不起作用,我不知道为什么。 XML: 样式: 我也试过使用这些: