Java:My height map generator只写二进制代码

Java:My height map generator只写二进制代码,java,random,png,terrain,heightmap,Java,Random,Png,Terrain,Heightmap,所以今天我开始了一个新项目。我想用java制作一个简单的heightmap生成器,因此我尝试了以下方法: import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class Heightmap { public static int width = 200

所以今天我开始了一个新项目。我想用java制作一个简单的heightmap生成器,因此我尝试了以下方法:

    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;

    public class Heightmap {


    public static int width = 200;
    public static int height = 200;

    public static void main(String[] args) {

        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY );
        for(int x = 0; x < width; x++){
            for(int y = 0; y < height; y++){
                bufferedImage.setRGB(x, y, (byte )(Math.random() * 256 + 128) ); // + 128 because byte goes from -128 to 127
            }
        }

        File outputFile = new File("heightmap.png");
        try { 
            ImageIO.write(bufferedImage, "png", outputFile);
        }catch (IOException ioex){
            ioex.printStackTrace();
        }
    }
}
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
公共类高度图{
公共静态整数宽度=200;
公共静态内部高度=200;
公共静态void main(字符串[]args){
BuffereImage BuffereImage=新的BuffereImage(宽度、高度、BuffereImage.TYPE\u字节\u灰度);
对于(int x=0;x
代码非常简单,我计划下一步尝试柏林噪声。但首先我需要解决这个问题:

heightmap.png中的像素要么完全为白色,要么完全为黑色。图像中没有灰度,这在高度贴图中当然是必要的。有人知道我做错了什么吗


它是
buffereImage.TYPE\u BYTE\u GRAY
部分吗?如果是这样,我应该用什么来代替呢?

在一位朋友让我走上正确的道路后,我找到了解决办法

我使用了
BufferdImage.TYPE\u BYTE\u GRAY
而不是
BufferedImage.TYPE\u INT\u RGB
。所以这确实是我错的地方。此外,我还添加了对象
Color randomColor
,其中RGB值都共享同一个整数,其值从0到255。然后在
BufferedImage.setRGB
中,我使用randomColor的颜色代码(因此R,G,B=255给出#FFFFFF,白色)作为像素(x,y)的值:

导入java.awt.Color;
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
公共类高度图{
公共静态整数宽度=200;
公共静态内部高度=200;
公共静态void main(字符串[]args){
BuffereImage BuffereImage=新的BuffereImage(宽度、高度、BuffereImage.TYPE_INT_RGB);
对于(int x=0;x
}

现在heightmap.png给出了我所期望的:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Heightmap {


public static int width = 200;
public static int height = 200;

public static void main(String[] args) {

    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB );
    for(int x = 0; x < width; x++){
        for(int y = 0; y < height; y++){
            int randomValue = (int)(Math.random() * 256);
            Color randomColor = new Color( randomValue, randomValue, randomValue);

            bufferedImage.setRGB(x, y, randomColor.getRGB());
        }
    }

    File outputFile = new File("heightmap.png");
    try { 
        ImageIO.write(bufferedImage, "png", outputFile);
    }catch (IOException ioex){
        ioex.printStackTrace();
    }




}