当前位置: 首页 > 面试题库 >

了解BufferedImage.getRGB输出值

邬安邦
2023-03-14
问题内容

我使用这种方法获取图像中像素的整数值:

int colour = img.getRGB(x, y);

然后,我打印出这些值,然后看到黑色像素对应于“ -16777216”之类的值,蓝色对应于“
-16755216”之类的蓝色,等等。有人可以向我解释该值背后的逻辑吗?


问题答案:

getRGB(int x, int y)返回位置 (x,y) 处的彩色像素值。
您误解了返回值。
它是二进制格式。就像11 … 11010101一样,它以int值的形式提供给您。
如果要获得该值的RGB(即红色,绿色,蓝色)分量,请使用Color类。例如

Color mycolor = new Color(img.getRGB(x, y));

然后,你可以通过使用获得红色,绿色或蓝色值getRed()getGreen()getBlue()getAlpha()。然后int,这些方法将以熟悉的格式返回具有值的值0 < value < 255

int red = mycolor.getRed();

如果您不想使用Color类,那么您将需要使用按位运算来获取其值。



 类似资料:
  • 问题内容: 在非常简单的HelloWorld应用程序上运行javap时,我对常量池周围的输出有些困惑。 测试代码 Javap -c -verbose输出(已删除) 好的,因此在第3行上,我们通过#22看到将“ hello world”常量推入堆栈,但是const#23似乎保留了实际值。我想我对#(数字)出现在打印输出的右侧时的含义有些困惑。 Oracle / Sun的javap手册页还有 很多不足

  • 当我运行一个Hive语句并启动相应的MR作业时,它通常有如下一行: 数字1280804751,279261996966是什么单位?字节?街区?有没有办法将它们转换为人类可读的格式? “花费的MapReduce CPU总时间”是什么意思?“累计CPU”是什么意思?

  • 我试图理解Apache Flink仪表板显示的“接收/发送的字节”是什么意思。在某些情况下,CSV文件托管在HDFS服务器上,我正在将结果写入机器上本地的TXT文件中。Flink也在我的机器上本地运行。考虑到这一点,“发送的字节”似乎是指“从HDFS服务器发送到我的机器的字节”,“接收的字节”似乎是指“从我的机器发送到HDFS服务器的字节”。这是正确的解释吗? 时间线显示的重叠任务也让我有点困惑。

  • 问题内容: 我一直在试图了解下面提到的代码中到底发生了什么。但是我听不懂。 可以说我的$ mode值为33188 $ mode和07777产生一个值= 420 $ mode值是十进制数字吗? 为什么选择07777,为什么要按位进行运算。我无法理解这里的逻辑。 问题答案: 您问题的模式对应于具有644个权限的常规文件(所有者为只读文件,其他所有人为只读文件),但请不要误解。 的值 可以 看作是十进制

  • 我相当肯定这是操作员的错误,我现在没有想清楚。 这是设置: 等 现在在proto文件中,我使用类似于go的导入(也许是问题),使得具有: