J'ai une échelle de gris height map, que j'ai créée dans Photoshop, et je dois la passer à un programme Java pour traitement. Je le charger en utilisant le ImageIO.read (...) la méthode puis convertir en niveaux de gris avec ce code:
Valeurs de niveaux de gris incorrectes à partir de 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();
Dans Photoshop, pixel (0,0) a une valeur de 17 . lorsque j'utilise heightMap.getData().getSample(0, 0, 0)
ou ((byte[])(heightMap.getRaster().getDataElements(0, 0, null)))[0] & 0xff
, je reçois une valeur de 64.
Fait intéressant, quand je lance map.getRGB(0, 0)>>16&0xFF
, je reçois aussi la valeur de 64.
Comment puis-je résoudre ce problème et obtenir une valeur de 17?
Merci.
Pourquoi convertissez-vous une image en niveaux de gris en une image en niveaux de gris? Que disent getType et getColorModel sur la carte d'origine? – john16384
Parce que quand je charge l'image (PNG), il est chargé comme type 0 (TYPE_CUSTOM) et avec ColorModel: #pixelBits = 32 numComponents = 2 espace de couleur = [email protected] transparency = 3 a alpha = true isAlphaPre = faux. –