你如何从头开始创建图像?
how do you create an image from scratch?
我已经搜索了大约半个星期了,我唯一能找到的就是使用所谓的 "pixel arrays," 但没有一个主题提到如何制作所述数组。我不想编辑图片 - 我想从头开始创建一张。
我做了一个小程序,可以为我创建基于大陆的地图,我想创建一个基于这些大陆的较小版本的地图(0 = 蓝色,1 = 绿色,2-5 = green/grey 山脉的不同组合)。如果您想在示例中使用我的变量,我的较小大陆数组称为 "field," 并且我使用 BufferedWriter 将大陆写入文件以进行错误测试(0 =“-”,1 =“”,其他都是一样的)。
谁能详细告诉我我该怎么做?
从头开始创建图像的一种方法是使用您所说的像素阵列并添加图像 header。
图像 header 因文件格式而异,但最简单的——例如——是位图。
来自维基百科
位图文件header
该字节块位于文件的开头,用于标识文件。一个典型的应用程序首先读取这个块以确保该文件实际上是一个 BMP 文件并且它没有被损坏。 BMP文件格式的前2个字节是字符"B",然后是ASCII编码的字符"M"。所有整数值都以 little-endian 格式存储(即 least-significant 字节在前)。
因此,如果您能够编写一个构建像素数组(代表图片)的程序,并确保有一个位图文件 header,其中包含数组头部的所有相关信息,理论上您可以从头开始创建图像。
Java 实施
一个像素只不过是一个由 0 - 255 范围内的 3 个数字组成的元组。
三个数字中的每一个分别代表红色、绿色和蓝色。
因此,如果您想创建一个像素数组,您可以创建一个具有三个字段成员的 object 类型的像素:
private int myRed;
private int myGreen;
private int myBlue;
然后像这样声明一个像素数组(当然是在你编写了正确的 BMP header 之后):
Pixel[][] picture = new Pixel[WIDTH][HEIGHT]
注意考虑在生成的像素中创建图片所需的 2 个维度。
使用某种类型的 OutputStream,然后您可以将所有必要的字节写入新文件 object。
我已经搜索了大约半个星期了,我唯一能找到的就是使用所谓的 "pixel arrays," 但没有一个主题提到如何制作所述数组。我不想编辑图片 - 我想从头开始创建一张。
我做了一个小程序,可以为我创建基于大陆的地图,我想创建一个基于这些大陆的较小版本的地图(0 = 蓝色,1 = 绿色,2-5 = green/grey 山脉的不同组合)。如果您想在示例中使用我的变量,我的较小大陆数组称为 "field," 并且我使用 BufferedWriter 将大陆写入文件以进行错误测试(0 =“-”,1 =“”,其他都是一样的)。
谁能详细告诉我我该怎么做?
从头开始创建图像的一种方法是使用您所说的像素阵列并添加图像 header。
图像 header 因文件格式而异,但最简单的——例如——是位图。
来自维基百科
位图文件header
该字节块位于文件的开头,用于标识文件。一个典型的应用程序首先读取这个块以确保该文件实际上是一个 BMP 文件并且它没有被损坏。 BMP文件格式的前2个字节是字符"B",然后是ASCII编码的字符"M"。所有整数值都以 little-endian 格式存储(即 least-significant 字节在前)。
因此,如果您能够编写一个构建像素数组(代表图片)的程序,并确保有一个位图文件 header,其中包含数组头部的所有相关信息,理论上您可以从头开始创建图像。
Java 实施
一个像素只不过是一个由 0 - 255 范围内的 3 个数字组成的元组。 三个数字中的每一个分别代表红色、绿色和蓝色。
因此,如果您想创建一个像素数组,您可以创建一个具有三个字段成员的 object 类型的像素:
private int myRed;
private int myGreen;
private int myBlue;
然后像这样声明一个像素数组(当然是在你编写了正确的 BMP header 之后):
Pixel[][] picture = new Pixel[WIDTH][HEIGHT]
注意考虑在生成的像素中创建图片所需的 2 个维度。
使用某种类型的 OutputStream,然后您可以将所有必要的字节写入新文件 object。