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 :

BufferedImage et les espaces de couleurs (ColorSpace)


Sujet :

AWT/Swing Java

  1. #41
    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 : 53
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Seulement voilà, maintenant j'aimerai lire/écrire de telles images. JAI ne veut pas en entendre parler et ImageIO m'écrit une image vide.

    Une idée ?
    J'ai testé et il semble effectivement y avoir un problème si on utilise la totalité des 32 bits du DataBuffer.TYPE_INT.

    Ca fonctionne si on spécifie explicitement le paramètre "int[] bits" dans ComponentColorModel, avec une valeur plus petite que 32.
    (quand on met "null", ca initialise au max possible pour le type --> 32)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ComponentColorModel(myColorSpace, new int[] {31,31,31,...} ,false,false,ColorModel.OPAQUE,DataBuffer.TYPE_INT) ;
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #42
    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 : 47
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Merci, ça fonctionne !
    Même en mettant 32, ImageJ et ImageIO sont tout à fait capable de lire les images sauvegardées.
    ImageJ s'emmêle juste un peu les pinceaux avec les types.
    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.

  3. #43
    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 : 53
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Même en mettant 32, ImageJ et ImageIO sont tout à fait capable de lire les images sauvegardées.
    Ah? Perso, j'ai trouvé la source du bug dans le JRE.

    fichier: ComponentColorModel.java 1.70 10/03/23
    méthode: getNormalizedComponents()
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    case DataBuffer.TYPE_INT:
        int[] ipixel = (int[]) pixel;
        for (int c = 0, nc = normOffset; c < numComponents; c++, nc++) {
            normComponents[nc] = ((float) ipixel[c]) /
                                 ((float) ((1 << nBits[c]) - 1)); // <---- divison par 0 si nBits[c]=32
        }
        break;

    Je ne sais pas si ca été corrigé depuis.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #44
    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 : 47
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Ah? Perso, j'ai trouvé la source du bug dans le JRE.

    fichier: ComponentColorModel.java 1.70 10/03/23
    méthode: getNormalizedComponents()
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    case DataBuffer.TYPE_INT:
        int[] ipixel = (int[]) pixel;
        for (int c = 0, nc = normOffset; c < numComponents; c++, nc++) {
            normComponents[nc] = ((float) ipixel[c]) /
                                 ((float) ((1 << nBits[c]) - 1)); // <---- divison par 0 si nBits[c]=32
        }
        break;

    Je ne sais pas si ca été corrigé depuis.
    Il semblerait car je viens de tester ce petit morceau de code :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    BufferedImage im = ImageNew.Integer(5, 5, 1) ;
    im.getRaster().setSample(0, 0, 0, Integer.MIN_VALUE) ;
    im.getRaster().setSample(3, 3, 0, Integer.MAX_VALUE) ;
    ImageIO.Write(im, "test.tif", ImageIO.TIFF) ;
    BufferedImage imnew = ImageIO.Read("test.tif") ;
    System.out.println("equal: " + ImageTools.areEqual(im, imnew)) ;
    J'ai mis des valeurs extrêmes, écris puis lu l'image et tout s'est bien passé.

    Encore 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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [Débutant] Dessiner les espaces de couleurs RGB et HSV
    Par marko1587 dans le forum MATLAB
    Réponses: 9
    Dernier message: 04/04/2014, 19h15
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. [String] comment virer tous les espaces vides ?
    Par Alec6 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2004, 14h27
  4. Enlever les espaces
    Par Claythest dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2003, 14h43
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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