你如何从头开始创建一个图像?

时间:2015-08-03 20:26:25

标签: java arrays image pixel

我现在已经搜索了大约半个星期,我唯一能找到的就是使用所谓的"像素阵列,"然而,没有一个主题说明如何制作所述阵列。我不想编辑图片 - 我想从头创建一个图片。

我制作了一个为我创建基于大陆的地图的小程序,我想基于这些大陆的较小版本创建地图(0 =蓝色,1 =绿色,2 -5 =山脉的绿色/灰色混合变化)。如果你想在一个例子中使用我的变量,我的small-continent数组被称为" field,"并且我使用BufferedWriter将大陆写入文件以进行错误测试(0 =" - ",1 ="",否则相同)。

有谁能详细告诉我,我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

从头开始创建图像的一种方法是使用您所说的像素阵列并添加图像标题。

图像标题在文件格式之间有所不同,但最简单的 - 例如 - 是 - 位图。

来自维基百科

位图文件标题

这个字节块位于文件的开头,用于标识文件。典型应用程序首先读取此块以确保该文件实际上是BMP文件并且它没有被损坏。 BMP文件格式的前2个字节是字符" B"那个角色" M"用ASCII编码。所有整数值都以little-endian格式存储(即最低有效字节优先)。

Wikipedia Table Source

所以,如果你能够编写一个构造像素数组(代表图片)的程序,并确保有一个位图文件头,其中包含阵列头部的所有相关信息,理论上你可以从头开始创建图像。

Java实施

像素只不过是0到255范围内3个数字的元组。 3个数字中的每一个分别代表红色,绿色和蓝色。

所以,如果你想制作一个像素数组,你可以用三个字段成员创建一个Pixel类型的对象:

private int myRed;
private int myGreen;
private int myBlue;

然后声明一个像素数组(当然你写完正确的BMP标题之后):

Pixel[][] picture = new Pixel[WIDTH][HEIGHT]

注意考虑创建生成的像素中保存的图片所需的2个维度。

使用某种类型的OutputStream,然后可以将所有必要的字节写入新的File对象。

相关问题