IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Représentation image en niveau de gris par Photoshop


Sujet :

avec Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut Représentation image en niveau de gris par Photoshop
    Bonjour,

    J'ai l'image suivante (voir pj) que je souhaite manipuler en java. Pour cela je dois lire cette image et la transformer en tableau de byte.

    Quand je crée directement cette image en java, voici ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, -67, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, 0, -1, 0, 0, -1, 0, -1, -1, -1, -1, 0, 0, -82, 0, -95, 0]
    Mais quand j'enregistre cette image depuis photosphop et que je la convertis en java, voici sa représentation en tableau de byte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 5, 0, 5, 5, 5, 5, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 0, 0, 2, 0, 1, 0]
    J'ai l'impression que photoshop fait une correspondance entre ses valeurs et les vrais valeurs, pourtant j'ai bien désactivé la compression et "l'interlace" lors de la sauvegarde.
    Avez-vous une explication?

    C'est une image en niveau de gris (un canal), j'enregistre donc cette image dans photoshop en 8bits.

    Voici le code qui ouvre mon image et la convertit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    File fileImgChar = new File("src/test/resources/letterA.png");
    BufferedImage imgInput = ImageIO.read(fileImgChar );
     
    byte[] srcDataImg = ImageUtil.getBytesFromGreyImage(imgInput);
     
     
    public static byte[] getBytesFromGreyImage(BufferedImage imgSrc) throws Exception {
    		int width = imgSrc.getWidth();
    		int height = imgSrc.getHeight();
     
    		// Get raw image data
    		Raster raster = imgSrc.getData();
    		DataBuffer buffer = raster.getDataBuffer();
     
    		int type = buffer.getDataType();
    		if (type != DataBuffer.TYPE_BYTE)
    		{
    			throw new Exception("Wrong image data type");
    		}
    		if (buffer.getNumBanks() != 1)
    		{
    			throw new Exception("Wrong image data format");
    		}
     
    		DataBufferByte byteBuffer = (DataBufferByte) buffer;
    		byte[] srcData = byteBuffer.getData(0);
     
    		// Sanity check image
    		if (width * height  != srcData.length) {
    			throw new Exception("Unexpected image data size. Should be greyscale image");
    		}
     
    		// Output Image info
    		log.debug("converted image to byte: width: " + width + ", height: " + height + ", num bytes: " + srcData.length);
     
    		return srcData;
    	}
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/12/2014, 21h15
  2. image en niveau de gris 16 bits
    Par kekeauboulot dans le forum Delphi
    Réponses: 2
    Dernier message: 16/06/2006, 19h25
  3. Réponses: 1
    Dernier message: 30/11/2005, 17h12
  4. Réponses: 8
    Dernier message: 17/04/2005, 19h58
  5. Image en niveau de gris
    Par SteelBox dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/10/2003, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo