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

Graphisme Java Discussion :

[Image] [JAI] comment fonctionne JAI.create()


Sujet :

Graphisme Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Points : 106
    Points
    106
    Par défaut [Image] [JAI] comment fonctionne JAI.create()
    Bonjour,

    J'ai un problème par rapport à la fonction JAI.create() : j'ai l'impression que c'est une fonction "fait-tout". Je m'explique :
    - créer une image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PlanarImage image = (PlanarImage)JAI.create("fileload", _filename);
    - convoluer une image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PlanarImage result = (PlanarImage)JAI.create("convolve", pl , kernel);
    - créer un histogramme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PlanarImage temp = (PlanarImage)JAI.create("histogram", pb);
    Histogram h = (Histogram)temp.getProperty("histogram");
    etc.. etc..

    Voilà, je voulais savoir s'il existait une liste finie d'opérateur (fileload, convolve, histogram) ou bien est ce qu'on peut faire vraiment "tout et n'importe quoi" ?

    Merci pour vos réponses

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Alors, bon, faut avouer que je suis pas fana de JAI.

    Si on regarde le code source de JAI.create, on arrive un moment sur quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public RenderedOp createNS(String opName,
                                   ParameterBlock args,
                                   RenderingHints hints) {
     
    //bla bla
     OperationDescriptor odesc = (OperationDescriptor)
                operationRegistry.getDescriptor(modeName, opName);
    On se rend compte qu'il y a une notion de Descriptor d'opérateurs. Pour chaque opérateur est associé une classe de Description :

    Par exemple, ConvoleDescriptor va contenir le nom du descripteur et les paramètres à mettre :
    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
        private static final String[][] resources = {
            {"GlobalName",  "Convolve"},
            {"LocalName",   "Convolve"},
            {"Vendor",      "com.sun.media.jai"},
            {"Description", JaiI18N.getString("ConvolveDescriptor0")},
            {"DocURL",      "http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/ConvolveDescriptor.html"},
            {"Version",     JaiI18N.getString("DescriptorVersion")},
            {"arg0Desc",    JaiI18N.getString("ConvolveDescriptor1")}
        };
     
        /** The parameter names for the Convolve operation. */
        private static final String[] paramNames = {
            "kernel"
        };
     
        /** The parameter class types for the Convolve operation. */
        private static final Class[] paramClasses = {
            javax.media.jai.KernelJAI.class
        };

    Après, il y a un fichier registryFile.jai qui contient la magnifique liste de tous les descripteurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    descriptor	javax.media.jai.operator.CompositeDescriptor
    descriptor	javax.media.jai.operator.ConjugateDescriptor
    descriptor	javax.media.jai.operator.ConvolveDescriptor
    Qui sera donc chargé par l'OperationDescriptor et qui chargera automatiquement à partir des indications donnée par ConvolveDescriptor les types d'appels qu'il est possible de faire.


    Perso, je trouve ça super crade.


    C'est d'ailleurs pour ça qu'il y a la fameuse classe ParameterBlock car c'est la seule manière de pouvoir appeler dynamiquement les opérateurs en mettant les paramètres là dedans.
    Je ne répondrai à aucune question technique en privé

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Points : 106
    Points
    106
    Par défaut re
    Merci,

    Exact c'est une vraie tambouille.

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

Discussions similaires

  1. Comment fonctionne l'algorithme markovien dans la segmentation d'image
    Par Papillon de mer dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 18/04/2012, 22h52
  2. [Image] [JAI ]Inversion avec JAI en erreur
    Par roxor972 dans le forum Graphisme
    Réponses: 0
    Dernier message: 15/01/2009, 13h39
  3. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10
  4. Comment fonctionne le ClassExplorer ?
    Par borisd dans le forum C++Builder
    Réponses: 7
    Dernier message: 30/09/2004, 17h44
  5. Comment fonctionne le CVS ?
    Par mathieu dans le forum CVS
    Réponses: 6
    Dernier message: 23/03/2004, 11h26

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