![]() |
1
13
有一种方法,但是您必须使用一些bufferedImage转换。一旦您创建了它们,就可以缓存它们或将它们保存下来,以便日后重用。从本质上讲,您希望从只使用alpha层关闭像素(也提供平滑的抗锯齿)的黑色图像(源颜色000000)开始。例如,在源图像中,每个像素都是黑色的,但是alpha通道在像素之间是不同的。 首先,阅读本文了解一些背景信息: http://www.javalobby.org/articles/ultimate-image/ 一旦你完成了这个初级读物,你就需要将你的图像加载到一个bufferedimage中:
接下来,您需要创建一个新的bufferedimage来将转换为:
本质上,setxormode将异或您在源图像中提供的颜色。如果源图像是黑色的,那么您提供的任何颜色都将按照您指定的方式写入。对于使用“0”作为alpha通道的新颜色,将尊重原始alpha通道值。最终结果是您要查找的组合。 编辑: 您可以用两种方法之一加载初始BufferedImage。最简单的是使用Java更新的IMAIO API: http://download.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html 将文件直接加载到BufferedImage。电话看起来是这样的:
或者,您可以使用工具箱创建一个方法来读取图像。
当然,如果你注意的话,我们必须做同样的事情把图像读到缓冲图像中,就像着色一样。简而言之,如果您更改了
|
![]() |
2
4
|
![]() |
3
3
要计算每个颜色分量的平均值并保留原始alpha:
这最适合我的情况。 |
![]() |
4
2
最简单的方法是使用 Image Filters by JH Labs . 您只需拨打
|
![]() |
5
1
我试过这一页上的每一个解决方案,都没有运气。XORONE(公认的答案)对我不起作用——不管争论的内容如何,它的颜色都是一种奇怪的黄色,而不是我作为争论对象给出的颜色。我终于找到了一个适合我的方法,尽管有点混乱。我想我会添加它,以防其他人也有同样的问题,我与其他解决方案。干杯!
|
![]() |
6
0
这不完全是着色,它更像是在它上面应用另一层,但它对我有用:
|
![]() |
7
0
因为我发现的所有方法都不适用于我,无论出于什么原因,这里有一个简单的方法来处理这个问题(不需要额外的libs):
黑色图像会 总是 保持黑色,但白色图像将是您指定的颜色。该方法通过每个像素,将图像的红绿色和蓝色值与参数相乘。这是OpenGL的确切行为 GLCOLL3f() 方法。r、g和b参数必须为0.0f到1.0f。 这个方法对alpha值没有问题。 |
![]() |
luh · 在jlabel中显示选定的jcheckbox 9 年前 |
|
user6566753 · JCheckBox自动取消选择 9 年前 |
![]() |
Jaran · 仅一个JTable单元格中的复选框 11 年前 |