我必须从两个 txt 文件创建一个 bmp 图像。第一个是 mxn 数组:
* * * * * * * *
米n
c11 c21 .. cm1
...
c1n c2n .. cmn
* * * * * * * *
* * * * * * * *
6 5
.7 .7 .6 1.0 1.2 .1
.9 .3 .7 1.1 .7 .2
1 1.1 1.2 1.3 1.7 .6
.5 .6 .5 .4 .9 .1101
2 .1 .1 .1 2.1 1.1
* * * * * * * *
第二个txt文件是色标,像这样
* * * * * * * *
min1 max1 r1 g1 b1
min2 max2 r2 g2 b2
...
minx maxx rx gx bx
* * * * * * * *
* * * * * * * *
0 .5 255 128 64
.5 .75 128 255 32
.75 1.25 64 64 225
01.50 5 128 128 0
* * * * * * * *
所以我必须读取这两个文件。我尝试使用 StringTokenizer 类从第一个 txt 文件创建一个数组,但我完全迷路了。从这两个文件我要创建一个 bmp 图像。 有人能以某种方式帮助我吗?
最佳答案
如果颜色范围是连续的(您的示例缺少 1.25-1.5)并且保证覆盖矩阵文件中所有可能的值,我会首先构建一个 TreeMap<Double, java.awt.Color>
,使用颜色文件中的最大值作为映射键。然后您可以使用 TreeMap#ceilingEntry(K)
方法来获取任何矩阵值的颜色。例如。如果您的测试数据正确填充,ceilingEntry(0.2).getValue() 将返回 Color(255,128,64)。
您可以更轻松地直接使用 java.awt.BufferedImage
,而不是将矩阵文件读入数组中绘制并稍后使用 javax.imageio.ImageIO
将缓冲图像写入 BMP 文件。
关于java - 如何从存储在 txt 文件中的 rgb 数据创建 bmp 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499318/