私はPhotoshopで作成したグレースケールheight mapを持っており、処理のためにJavaプログラムに渡す必要があります。私はこのコードをグレースケールに変換し、次いでImageIO.read(...)方法を使用して、それをロードしています:
Java BufferedImage Rasterの不正確なグレースケール値
BufferedImage map = ImageIO.read(new File(...));
BufferedImage heightMap = new BufferedImage(map.getWidth(), map.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
heightMap.getGraphics().drawImage(map, 0, 0, null);
heightMap.getGraphics().dispose();
、画素(0,0)は17の値を有します私はmap.getRGB(0, 0)>>16&0xFF
を実行したとき。私はheightMap.getData().getSample(0, 0, 0)
または((byte[])(heightMap.getRaster().getDataElements(0, 0, null)))[0] & 0xff
を使用する場合、私は興味深いことに64
の値を取得し、また、私はこれを修正し、17の値を取得するにはどうすればよい64
の値を取得しますか?
ありがとうございました。
なぜグレースケールイメージをグレースケールイメージに変換していますか? getTypeとgetColorModelは元のマップで何を表していますか? – john16384
イメージ(PNG)をロードしているときに、タイプ0(TYPE_CUSTOM)とColorModelでロードされています:#pixelBits = 32 numComponents = 2 color space = [email protected] transparency = 3 has alpha = true isAlphaPre = falseです。 –