如何从txt文件中存储的rgb数据创建bmp文件?
我必须从两个 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文件是色标,像这样
* * * * * * * *
最小值1 最大值1 r1 g1 b1
最小值2 最大值2 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 图像。 有人可以以某种方式帮助我吗?
I've to create a bmp image from two txt files.The first one is an mxn array:
* * * * * * * *
m 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
* * * * * * * *
The second txt file is a color scale, like this
* * * * * * * *
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
* * * * * * * *
So I've to read from this two files. I've tried to create an array from the first txt file using StringTokenizer class but I'm lost at all. From the two files I've to create a bmp image.
Someone can help me in some way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果颜色范围是连续的(您的示例缺少 1.25-1.5)并且保证覆盖矩阵文件中的所有可能值,我首先会构建一个
TreeMap
,使用颜色文件中的最大值作为贴图键。然后,您可以使用TreeMap#ceilingEntry(K)
方法获取任何矩阵值的颜色。例如,如果正确填充了测试数据,ceilingEntry(0.2).getValue() 将返回 Color(255,128,64)。您可以更轻松地直接使用 java.awt.BufferedImage 进行绘制,然后使用 javax.imageio.ImageIO 写入矩阵文件,而不是将矩阵文件读取到数组中缓冲图像为 BMP 文件。
If the colour ranges are continous (your example is missing 1.25-1.5) and are guaranteed to cover all possble values in the matrix file, I would first have built a
TreeMap<Double, java.awt.Color>
, using the max value from the colour file as map key. You can then use theTreeMap#ceilingEntry(K)
method to get the colour for any matrix value. E.g. if populated correctly with your test data, ceilingEntry(0.2).getValue() will return Color(255,128,64).Instead of reading the matrix file into an array, you could more easily directly use a
java.awt.BufferedImage
to draw into and later usejavax.imageio.ImageIO
to write the buffered image as a BMP file.叹息......当我写下程序时,@jarnbjo 解释了同样的想法。但这里有一些代码:
Sigh... while I wrote the program down, @jarnbjo explained the same idea. But here you have some code:
与此同时(我需要更多时间哈哈)我只编写了将第一个矩阵文件保存到数组中的代码:(如果您想看一下并且它可以工作,那么这里是代码。但实际上我在您的代码上.我会让你知道我会达到什么目的...
In the same while (I need more time lol) I wrote just the code to save into the array the first matrix file :( here is the code just if you want to give a look and it works. But actually I'm on yours. I'll let you know what I'll reach. Thank you guys...