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

AWT/Swing Java Discussion :

Savoir si une image est en couleur ou en niveaux de gris


Sujet :

AWT/Swing Java

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Savoir si une image est en couleur ou en niveaux de gris
    Bonsoir,

    je souhaiterai savoir comment est ce que l'on peut déterminer si une image (stockée dans un BufferedImage) est en couleur ou en niveau de gris.

    J'ai trouvé cette discussion qui donne une réponse.
    Malheureusement, dans mon cas j'ai lu avec JAI et ImageIO de nombreuses images (couleur et niveaux de gris) et le type a toujours été Image.TYPE_3BYTE_BGR (même pour des images binaires ).
    Donc je souhaitai savoir s'il existait une solution facile pour connaître le type de couleur dont est composé l'image.
    Sinon il y a bien évidemment la méthode bourine qui consiste à vérifier l'égalité entre les composantes des couleurs de chaque pixel (merci l'angoisse et la complexité).


    Merci par avance
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Je dirais que tu prends le problème par le mauvais bout :
    1. Vérifie la source de tes images pour vérifier qu'elles soient produites dans le bon format (en niveau de gris quand elles ne contiennent que du gris), ce qui n'est visiblement pas le cas.
    2. Après chargement vérifie le color model et s'il est bon tu n'as pas de boulot supplémentaire à faire.
    3. S'il n'est pas bon, tu peux la rejeter en indiquant à l'utlisateur que son format n'est pas bon ou alors tu es parti pour vérifier un par un tous les pixels de l'image... pis après soit tu la conserves telle quelle soit tu la convertis en image en niveau de gris (avec le bon color model donc).


    EDIt - évidement si l'image est grosse, utilise plutôt le JAI et charge là en PlanarImage et vérifie ses tiles un par un.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    merci, un des problèmes était bien sur les couleurs des images.

    Malheureusement, j'ai un autre souci :-( à cause de ce de codage sRGB.
    Lorsque je lis une image en 256 niveaux ce gris (Image.TYPE_GRAY), comment est ce que je dois faire pour passer la valeur d'un pixel à la méthode setRGB() et ensuite la récupérer avec getRGB() ?
    Parce que si je ne fais aucune modification, la valeur en niveaux de gris que je passe n'est absolument pas celle que je récupère ;(

    Connaîtrais tu un tutoriel sur le sujet ?

    Merci



    PS : j'ai essayé ce morceau de code pour gérer les valeurs des pixels des images en 256 niveaux de gris
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public int Pixel(int y, int x)
    	{
    	return getRGB(x, y) & 0xFF ;
    	}
     
    public void Pixel(int y, int x, int Value)
    	{
    	setRGB(x, y, 0xFF000000 | (Value<<16) | (Value<<8) | (Value)) ;
    	}

    Puis j'ai fait le test suivant
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Image image = new Image(256, 1, Image.TYPE_BYTE_GRAY) ;
     
    for (int i=0 ; i < 256 ; i++) image.Pixel(0, i, i) ;
     
    int nb = 0 ;
    for (int i=0 ; i < 256 ; i++)
    	if ( image.Pixel(0, i) != i )
    		{
    		nb++ ;
    		System.err.println(i + " => " + image.Pixel(0, i)) ;
    		}
    System.out.flush() ;
    System.out.println("nb = " + nb) ;


    Le résultat est presque correcte, c'est le presque qui m'agace. Il y a 73 cas où les valeurs diffèrent légèrement. Sauf pour les valeurs faible où ça diffère beaucoup.
    1 => 0
    2 => 0
    3 => 0
    4 => 0
    5 => 0
    6 => 0
    7 => 13
    8 => 13
    9 => 13
    10 => 13
    11 => 13
    12 => 13
    14 => 13
    15 => 13
    16 => 13
    17 => 13
    18 => 22
    19 => 22
    20 => 22
    21 => 22
    23 => 22
    24 => 22
    25 => 22
    26 => 28
    27 => 28
    29 => 28
    30 => 28
    31 => 28
    32 => 34
    33 => 34
    35 => 34
    36 => 34
    37 => 38
    39 => 38
    40 => 38
    41 => 42
    43 => 42
    44 => 42
    45 => 46
    47 => 46
    48 => 50
    49 => 50
    51 => 50
    52 => 53
    54 => 53
    55 => 56
    57 => 56
    58 => 59
    60 => 61
    62 => 61
    63 => 64
    65 => 64
    67 => 66
    68 => 69
    70 => 71
    72 => 73
    74 => 73
    76 => 75
    78 => 77
    80 => 79
    82 => 83
    84 => 85
    87 => 86
    89 => 88
    91 => 92
    94 => 95
    97 => 96
    100 => 99
    103 => 104
    107 => 106
    111 => 112
    116 => 117
    123 => 124
    nb = 73
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Malheureusement, j'ai un autre souci :-( à cause de ce de codage sRGB.
    Lorsque je lis une image en 256 niveaux ce gris (Image.TYPE_GRAY), comment est ce que je dois faire pour passer la valeur d'un pixel à la méthode setRGB() et ensuite la récupérer avec getRGB() ?
    Parce que si je ne fais aucune modification, la valeur en niveaux de gris que je passe n'est absolument pas celle que je récupère ;(
    C'est un bug connu. Les valeurs dans une BufferedImage TYPE_BYTE_GRAY ne respecte pas les valeurs d'origine. Il faut construire soi-meme une palette de 256 niveaux de gris :

    http://www.developpez.net/forums/d75..._byte_indexed/
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    merci pour ce lien.
    J'ai récupérer cette partie afin de construire ma table de couleur
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    byte cmap[] = new byte[256];
    for (int i = 0; i < 256; i++) cmap[i] = (byte)i;
    IndexColorModel gray = new IndexColorModel(8, cmap.length, cmap, cmap, cmap);
    BufferedImage bg = new BufferedImage(input.getWidth(), input.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, gray);

    Mais comment faire pour affecter et récupérer les valeurs correctement ?




    EDIT : bon... j'ai apparemment résolu le problème comme ceci :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public int Pixel(int y, int x)
    	{
    	return getRaster().getPixel(x, y, (int[])null)[0] ;
    	}
     
     
    public void Pixel(int y, int x, int Value)
    	{
    	getRaster().setPixel(x, y, new int[]{Value}) ;
    	}

    Est ce que cela est lourd au niveau temps d'accés ? Si oui, comment aller plus vite ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public int Pixel(int y, int x)
    	{
    	return getRaster().getPixel(x, y, (int[])null)[0] ;
    	}
     
     
    public void Pixel(int y, int x, int Value)
    	{
    	getRaster().setPixel(x, y, new int[]{Value}) ;
    	}
    En fait, en faisant cela pour tout ce qui est image en niveaux de gris ou binaires, je n'ai plus d'erreur .
    La seule chose maintenant, c'est peut être un problème de complexité au niveau accès à l'information.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Y a parfois des moment où je me demande ce qu'ils font chez Sun à part concevoir des démos etc... Ca c'est typiquement le genre de bugs qui sera encore présent dans 10 ans...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    En fait, en faisant cela pour tout ce qui est image en niveaux de gris ou binaires, je n'ai plus d'erreur .
    La seule chose maintenant, c'est peut être un problème de complexité au niveau accès à l'information.
    Pourquoi ne pas avoir créé une nouvelle BufferedImage comme indiqué dans le workaround ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    en fait c'est ce que je fais. Lors de la lecture avec JAI, si le type est TYPE_BYTE_GRAY, je fais une nouvelle image en TYPE_BYTE_INDEXED et j'utilise les deux méthodes ci-dessus pour lire/écrire dans l'image.
    Cela te semble t-il correcte ?
    Que penses tu de ces méthodes au niveau complexité (algo quand tu nous tiens ) ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonjour,

    en fait c'est ce que je fais. Lors de la lecture avec JAI, si le type est TYPE_BYTE_GRAY, je fais une nouvelle image en TYPE_BYTE_INDEXED et j'utilise les deux méthodes ci-dessus pour lire/écrire dans l'image.
    Cela te semble t-il correcte ?
    Que penses tu de ces méthodes au niveau complexité (algo quand tu nous tiens ) ?
    J'ai toujours utilisé "drawimage" pour recopier une image dans une autre, et je n'ai jamais remarqué de lenteurs particulières.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    ceci marche très bien et me permet de stocker/coder/gérer/etc. mes images en niveaux de gris (je ne gère que les 256 pour le moment).
    Citation Envoyé par ToTo13 Voir le message
    J'ai récupérer cette partie afin de construire ma table de couleur
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    byte cmap[] = new byte[256];
    for (int i = 0; i < 256; i++) cmap[i] = (byte)i;
    IndexColorModel gray = new IndexColorModel(8, cmap.length, cmap, cmap, cmap);
    BufferedImage bg = new BufferedImage(input.getWidth(), input.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, gray);
    Malheureusement, au moment d'écrire, JAI considère que c'est une image couleur :-( En effet, le getColorModel().getColorSpace().getType() me renvoi que c'est un espace RGB et non pas GRAY :-(.
    Y a t-il une solution pour lui imposer le fait que ce soit une image noir et blanc ? Que ce soit lors de la lecture (le mieux) ou de l'écriture ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Malheureusement, au moment d'écrire, JAI considère que c'est une image couleur :-( En effet, le getColorModel().getColorSpace().getType() me renvoi que c'est un espace RGB et non pas GRAY :-(.
    Jusque la c'est normal, car TYPE_BYTE_INDEXED correspond a une image avec une palette de couleur, donc un espace RGB.

    Y a t-il une solution pour lui imposer le fait que ce soit une image noir et blanc ? Que ce soit lors de la lecture (le mieux) ou de l'écriture ?
    Et bien, au lieu de copier l'image dans un "TYPE_BYTE_INDEXED", il faut la copier dans un BufferedImage "customizé" (= 8 bits, mais sans utiliser le colormodel GRAY qui modifie les valeurs).

    Code java : 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
     
    // lecture image originale
    BufferedImage bimg = ImageIO.read( new file("original") );
    int width=bimg.getWidth(), height=bimg.getHeight();
     
    // création d'un BufferedImage customisé
    ColorSpace cs = new ColorSpace(9999,1) {
     
    	@Override public float[] toRGB(float[] colorvalue) {
    		return new float[] {colorvalue[0],colorvalue[0],colorvalue[0]};
    	}
     
    	@Override public float[] toCIEXYZ(float[] colorvalue) {
    		return null;
    	}
     
    	@Override public float[] fromRGB(float[] rgbvalue) {
    		return new float[] {rgbvalue[0]};
    	}
     
    	@Override public float[] fromCIEXYZ(float[] colorvalue) {
    		return null;
    	}
    	};
    int[] nBits = {8};
    ColorModel colorModel = new ComponentColorModel(cs, nBits, false, true, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
    WritableRaster raster = colorModel.createCompatibleWritableRaster(width,height);
    BufferedImage bgray = new BufferedImage(colorModel,raster,false,null);
     
    // copie image originale dans la version custom
    bgray.createGraphics().drawImage(bimg, AffineTransform.getTranslateInstance(0, 0), null);
     
    // ... utiliser/modifier/sauvegarder bgray

    (sauf erreur, j'ai fait ca a la va vite )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Merci une fois de plus :-)
    Je regarde tout cela, je teste et je marque résolu au cas où :-)

    Petite question : est ce qu'il y a une solution pour juste forcer l'écriture en gris ? Comme par exemple juste écrire un des champs de couleur ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  14. #14
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Merci une fois de plus :-)
    Je regarde tout cela, je teste et je marque résolu au cas où :-)

    Petite question : est ce qu'il y a une solution pour juste forcer l'écriture en gris ? Comme par exemple juste écrire un des champs de couleur ?
    Non, je ne pense pas. Au mieux tu peux recopier l'un des layer RGB dans une BufferedImage GRAY, puis la sauver:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    BufferedImage bimg = ... /* image RGB originale */
     
    // copie du layer RED (0) dans une BufferedImage GRAY
    BufferedImage bgray = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
    int [] layerRed = bimg.getRaster().getSamples(0, 0, width, height, 0, (int[])null);
    bgray.getRaster().setSamples(0, 0, width, height, 0, layerRed);
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonsoir,

    oui, mais dans ce cas là on retombe sur le bug connu de GRAY. :-(
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  16. #16
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonsoir,

    oui, mais dans ce cas là on retombe sur le bug connu de GRAY. :-(
    heu... normalement non. Les données contenues dans le raster ne sont pas modifiées par le ColorModel (et donc le profile ICC), donc ca devrait être bon.

    En fait, tant que tu n'utilises pas la fonction getPixel/setPixel il ne devrait pas y avoir de soucis, que ce soit à la lecture ou l'ecriture.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #17
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Tu as une fois de plus la solution... ohhh grand manitou

    J'ai pris la version pour l'écriture et sa fonctionne parfaitement. J'ai choisi celle-là car toute ma plate-forme travaille avec des images en niveaux de gris codées dans des TYPE_INDEXED et je ne me sentais pas de devoir faire les changements.

    Merci
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  18. #18
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Tu as une fois de plus la solution... ohhh grand manitou
    clair. C'est au moins du niveau SCJP.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  19. #19
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Maintenant le problème s'est un peu déplacé ;-)
    C'est plus simple, mais il y a trop de choses confuses dans ces classes.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Savoir si une image est visible
    Par pas30 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/01/2009, 16h41
  2. Savoir si une image est couleur ou n&b
    Par kinola dans le forum C#
    Réponses: 3
    Dernier message: 09/05/2008, 17h39
  3. Savoir si une image est en couleur ou en niveaux de gris
    Par abir2007gallas dans le forum Images
    Réponses: 3
    Dernier message: 24/04/2008, 13h02
  4. Déterminer si une image est en couleur
    Par ImagingAllthe dans le forum Images
    Réponses: 2
    Dernier message: 26/02/2008, 15h48
  5. Savoir si une image est entrelacee
    Par SnakemaN dans le forum Traitement d'images
    Réponses: 21
    Dernier message: 12/11/2007, 14h31

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