0

Photoshop で作成した非常に大雑把な高さマップを使用して、タイル張りのアイソメトリック グリッドを定義しようとしています。

地図: http://i.imgur.com/jKM7AgI.png

画像内のすべてのピクセルをループし、そのピクセルの色を選択したスケール (0 ~ 100 など) に変換することを目指しています。

現時点では、次のコードを使用しています。

    try
    {
        final File file = new File("D:\\clouds.png");
        final BufferedImage image = ImageIO.read(file);

        for (int x = 0; x < image.getWidth(); x++) 
        {
            for (int y = 0; y < image.getHeight(); y++) 
            {
                int clr = image.getRGB(x, y) / 99999;
                if (clr <= 0)
                    clr = -clr;

                System.out.println(clr);        
            }
        }
    }
    catch (IOException ex)
    {
         // Deal with exception
    }

これはある程度機能します。位置 0 の黒いピクセルは 167 で、位置 999 の白いピクセルは 0 です。ただし、特定のピクセルを画像に挿入すると、少し奇妙な結果が得られます。一桁であること。

より信頼性の高い結果が得られる代替ソリューションはありますか?

どうもありがとう。

4

2 に答える 2

1

これはグレースケール マップであるため、RGB 部分はすべて同じ値 (0 ~ 255 の範囲) になるため、パックされた整数から 1 つを取り出して、255 の何パーセントであるかを調べます。

int clr = (int) ((image.getRGB(x, y) & 0xFF) / 255.0 * 100);

System.out.println(clr);        
于 2014-09-17T00:42:56.500 に答える