Tag: rgb

Java:使用颜色操作(加,减)? – 恒定类中的颜色

我正在使用java.awt.Color实例。 有没有办法对颜色进行算术运算? 像rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190) ? 我正在尝试做的事情:我有一个带有桌子的gui,如果用户点击一个单元格,其他单元格会根据它们与所选单元格的关系改变颜色。 我正在寻找一种方法来避免硬编码基色是什么,以及它们改变的颜色值。 因此,所选单元格可能是rgb(255, 0, 0) ,其他所有内容可能基于它们的值在rgb(0, 0, 0)和rgb(0, 255, 0) 。 我在想…枚举? import java.awt.Color; public enum ColorConstant { SELECTED (new rgb(255, 0, 0), “Red”), MAX_DISTANCE (new rgb(0, 255, 0), “Green”) private Color shade; private ??? whichColorToModify; }

将彩虹颜色映射到RGB

假设我有一个类RainbowColorsMapper和构造函数RainbowColorsMapper(int n) ,其中n> = 2。 现在我希望连续映射彩虹色从红色到紫色,我使用方法mapper.getColor(int number) ,其中低值对应红色端,高值接近n到紫色端。 如果n = 2,则mapper.getColor(0)返回光谱的大部分左侧颜色(接近红色), mapper.getColor(1)返回最正确的颜色。 与自动缩放的较大n相同。 我的问题:这可以相对容易地完成,如果是,那么算法的建议是什么?

Java – 红色,绿色,蓝色到getRGB

通过使用BufferedImage对象调用getRGB(int x, int y) ,可以得到一个负数。 如何将三个不同的值(红色,绿色和蓝色)转换为这个单个负数?

在java中查找RGB的按位版本

我有以下方法获取rgb值并使用较小的调色板对其进行分类: private static int roundToNearestColor( int rgb, int nrColors ) { int red = ( rgb >> 16 ) & 0xFF; int green = ( rgb >> 8 ) & 0xFF; int blue = ( rgb & 0xFF ); red = red – ( red % nrColors ); green = green – ( green % […]

比较两个BufferedImages之间像素值的最快方法?

我有一个TYPE_INT_BGR类型的BufferedImage。 我需要与另一个BufferedImage进行逐像素比较,以计算两个图像之间的“距离”。 我有一些有用的东西,但很慢。 我从“参考”图像中获取一个像素,将其分解为RGB字节: int pixel = referenceImage.getRGB(col, row); int red = (pixel >> 16) & 0xff; int green = (pixel >> 8) & 0xff; int blue = (pixel) & 0xff; 我将r / g / b值与候选图像的相应像素进行比较,并将差值求平方。 有没有更快的方法来进行这种比较? 窥视JRE源代码,我看到BufferedImage.getRGB()实际上是将光栅中的RGB值组合在一起,这对我来说是浪费的,因为我只是将它再次分解为字节。 我将尝试直接尝试,但我想知道是否有更好的方法来做到这一点,无论是通过我可能错过的Java或第三方API。

java Buffered Image:检测黑色像素

我有这个简单的代码来通过24位彩色windows bmp文件 BufferedImage mapa = BMPDecoder.read(new File(“maps/map.bmp”)); final int xmin = mapa.getMinX(); final int ymin = mapa.getMinY(); final int ymax = ymin + mapa.getHeight(); final int xmax = xmin + mapa.getWidth(); for (int i = xmin;i<xmax;i++) { for (int j = ymin;j<ymax;j++) { int pixel = mapa.getRGB(i, j); if (pixel == 0) { System.out.println("black at […]

如何在TYPE_3BYTE_BGR中获取jpeg图像的rgb值?

我有这个图像: 我想在int[]提取这个图像的RGB值。 这是我到目前为止为PNG图像所做的事情: File f = new File(“t.jpg”); BufferedImage img = ImageIO.read(f); int[] ib = img.getRGB(0, 0, img.getWidth(), img.getHeight(), null, 0, img.getWidth()); Color c = new Color(ib[0]); System.out.println(c.getRed() + ” ” + c.getGreen() + ” ” + c.getBlue()); 但是在这里我得到了这个输出: 255 128 128这是不可预期的,因为我清楚地看到(并且在几个图像编辑器中已经validation)(0,0)处的像素具有这些值255 255 255 。 我注意到img.getType()返回的类型等于TYPE_3BYTE_BGR所以我猜这是在场景后面发生的解码问题,但我无法弄清楚如何解决它(或者更清楚地了解正在发生的事情)。 有没有人会建议如何正确解码这种类型?

ImageIO读取的RGB值略微不同于其他方法

我发现在使用Java(实际上是绘制.NET )时,我使用的不同是RGB,而不是使用ImageMagick,Gimp,Python和Octave。 最后4个都同意彼此,所以我假设是正确的。 对于这些示例,我正在使用此测试图像: http://farm3.static.flickr.com/2811/9177301733_9836174725_o.jpg : http://farm3.static.flickr.com/2811/9177301733_9836174725_o.jpg 测试像素x=4144 y=2768 RGB Java = (125, 107, 69) Paint.NET = (125, 107, 69) ImageMagick = (128, 106, 67) Python = (128, 106, 67) Octave = (128, 106, 67) Gimp = (128, 106, 67) 是什么赋予了? 这是使用imagemagick的快速测试: convert image.jpg -crop 1×1+4144+2768 -depth 8 txt: 输出: # ImageMagick pixel enumeration: 1,1,65535,srgb […]

更改图像rgb值的lsb值,给出不一致的值

我试图更改图像像素的lsb值,使其与字符串“abc”匹配,但将1或0添加到奇数值的像素返回0. 这里是代码: public static void main(String[] args) { BufferedImage img = null; try { img = ImageIO.read(new File(“a.jpg”)); } catch (IOException ex) { } int pixel[] = img.getRGB(0, 0, img.getWidth(), img.getHeight(), null, 0, img.getWidth()); String s = “abc”; byte[] b = s.getBytes(); String f = “”; for (int i = 0; i < b.length; i++) […]

如何在indesign中以编程方式将CMYK转换为RGB

我在indesign中有一个CMYK颜色空间,我想将其转换为RGB颜色空间,我有一些代码,但我收到的数据不正确。 我试过的一些代码如下 double cyan = 35.0; double magenta = 29.0; double yellow = 0.0; double black = 16.0; cyan = Math.min(255, cyan + black); //black is from K magenta = Math.min(255, magenta + black); yellow = Math.min(255, yellow + black); l_res[0] = 255 – cyan; l_res[1] = 255 – magenta; l_res[2] = 255 – yellow; […]