2016-10-23 6 views
0

今日、私は新しいプロジェクトを開始しました。私はJavaでシンプルなハイトジェネレータを作りたいので、私は次のことを試してみました:Java:高さマップジェネレータはバイナリのみを書きます

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(); 
     } 
    } 
} 

コードは非常に簡単です、私は次のステップとして、パーリンノイズをしようとする計画します。しかし、最初に私はこの問題を解決する必要があります。heightmap.pngGenerated Heightmap

ピクセルがいずれか完全に白、または完全に黒です。画像には灰色がありません。高さマップにはもちろん必要です。誰かが私が間違ったことを知っていますか?

BufferedImage.TYPE_BYTE_GRAY部分ですか?もしそうなら、私は代わりに何を使うべきですか?

答えて

1

友人が正しい道を私に設定した後、私は解決策を見つけました。

BufferedImage.TYPE_BYTE_GRAYの代わりに私はBufferdImage.TYPE_INT_RGBを使用しました。だから私は間違っていました。また、オブジェクトColor randomColorを追加しました。RGB値はすべて0から255の値を持つ同じ整数を共有します。では、randomColorのカラーコードを使用します(R、G、B = 255は#FFFFFFを与えます。 x、y)が(画素の値として)を白色れる:

}

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(); 
    } 




} 

今heightmap.pngは私が期待したものが得られる:Heightmap.png

関連する問題