gpt4 book ai didi

java - 如何使用 Java 将灰度二维矩阵打印到 JPanel

转载 作者:行者123 更新时间:2023-12-01 10:12:32 24 4
gpt4 key购买 nike

我有二维矩阵。

int[][] matrix;

矩阵的值是区间(X, Y)中的int数字。

例如,矩阵的值位于区间(0, 1000)

如何计算像素灰度颜色?

 for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
myJpanel.setRGB(i, j, grayScaleColor);
}
}

感谢您的帮助。

最佳答案

假设val是单元格的值。并且您希望该点在 val==0 时为黑色,在 val==1000 时为白色。

在 RGB 中,白色为 (255,255,255),黑色为 (0,0,0)。对于灰度,您只需为每 3 个分量设置相同的值即可。例如:(33,33,33)(D4,D4,D4)。我们将此值称为 c(颜色)

现在,您的问题变成了一个简单的数学问题:

  • val==0时,c=0
  • val==1000时,c=255

基本上,您只需更改矩阵的比例即可。所以c=(int) (val*255.0/1000.0)

您必须输入的颜色是new Color(c,c,c)

TL;DR:

for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
int c=(int) (matrix[i][j]*255.0/1000.0);
myJpanel.setRGB(i, j, new Color(c,c,c));
}
}

请注意,这可能不起作用,因为我不知道 myJpanel 类型是什么。

编辑:

你必须将其视为一个数学问题。 我们可以这样总结问题:

c = a*val + constant

因为你的灰度是线性的。这与

完全相同
c = a*(val + b)

了解

0 = a*(your_min + b)
255 = a*(your_max + b)

通过开发这个数学系统,你最终得到

b = -your_min = -1* your_min
a = 255/(your_max + b) = 255/(your_max-your_min)

关于java - 如何使用 Java 将灰度二维矩阵打印到 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com