【问题标题】:height map related issue高度图相关问题
【发布时间】:2014-01-20 13:40:36
【问题描述】:

我正在尝试用 Java 编写一个程序,该程序使用 Perlin 噪声来制作黑白高度图。我尝试使用来自here 的代码来实现噪音。我使用下面的代码尝试让噪音制作高度图,但我得到的是 this 之类的东西,而不是获得高度图。

BufferedImage img;
img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB );

int[] pixel = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();

for(int i = 0; i < (WIDTH*HEIGHT); i++)
{
    pixel[i] = (int) perlin.PerlinNoise(i, i);   
} 

【问题讨论】:

  • 如果您只想要灰度(= hight-map),为什么还要使用 RGB 图像?
  • 如果图像是 TYPE_BYTE_GRAY 或 TYPE_USHORT_GRAY,我找不到在图像上绘制的方法。

标签: java image awt bufferedimage perlin-noise


【解决方案1】:

您可以按如下方式使用BufferedImage.TYPE_BYTE_GRAY:创建int[] 类型的噪声数组,其中数组中的数字应介于[0,255] 之间。假设这个像素数组被称为pixelData,那么下面的应该可以工作

BufferedImage img = new BufferedImage(WIDTH, HEIGHT, 
                                     BufferedImage.TYPE_BYTE_GRAY);
img.getRaster().setPixels(0, 0, WIDTH, HEIGHT, pixelData);

File output = new File("image.jpg");
try {
  ImageIO.write(img, "jpg", output);
} catch (IOException e) {
  e.printStackTrace();
}

如果你想有一个完整的例子,那么请看下面的问题:Issue with Perlin Noise in Java

【讨论】:

  • permutation[] 是否只是您为噪声弥补的每个点的随机值,还是必须是这些值?
  • 您的意思是在链接的 Java 中的 Perlin Noise 问题 帖子中?这不是我的代码!这是 Perlin 的参考实现,老实说,我不知道答案。您必须阅读该出版物。
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2010-10-23
相关资源
最近更新 更多