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

Java ME Discussion :

Image Processing : Problème avec les Inputstream du MédiaProcessor


Sujet :

Java ME

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut Image Processing : Problème avec les Inputstream du MédiaProcessor
    Bonjour!

    J'ai un souci pour faire du traitement d'images. En fait j'ai dévelopé une appli qui va chercher un nombre donné de photos dans la mémoire du téléphone et les affiche à l'écran. (enfin, c'est un peu plus compliqué que cela mais disons que en ce qui concerne le problème que j'ai, cela suffit).
    Donc, j'ai récupéré mes images du tel, et j'ai donc fait des objets Image à partir de cela.

    Je voudrais en fait que ces images apparaissent à l'écran du mobile avec un effet, par exemple monochrome.

    Après pas mal de recherches, j'ai fini par trouver qu'il est possible de faire du traitement d'images avec des classes déjà toutes prêtes comme MédiaProcessor.
    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
    MediaProcessor mp = GlobalManager.createMediaProcessor("image/png");
    // OutputStream pour stocker l'images apres traitement
    outputStream = new ByteArrayOutputStream();
    inputStream = getClass().getResourceAsStream("URL genre : /image/img.png");
    mp.setInput(inputStream, MediaProcessor.UNKNOWN);
    ImageEffectControl iec = (ImageEffectControl)mp.getControl(
                  "javax.microedition.amms.control.imageeffect.ImageEffectControl");
    iec.setPreset("monochrome");
    iec.setEnabled(true);
    mp.complete();
    processedImage = createStreamARGBImage(
                        outputStream, true, 
                        width, // width img
                        height); // height img
    Ce code a l'air pas mal comme ca, mais cependant ca me pose quand meme pas mal de problèmes :

    - premièrement, "URL genre : /image/img.png", bah ca ne m'arrange pas trop : ce que j'ai, ce sont des objets Image, et comme les images viennent directement du tel, je n'ai pas d'images .png dans le dossier res de l'appli. Donc ma première question est la suivante : comment faire la même chose avec un objet Image?

    - deuxièmement, je n'ai pas réussi à trouver de docs sur la fonction createStreamARGBImage , quand je tape createStreamARGBImage dans google, il ne trouve aucune page , d'où ma deuxième question : est ce que quelqu'un peut me renseigner sur cette fonction : sur les objets de quels types s'applique-t-elle, que fait elle, et surtout quel est le role des ses paramètres ...

    Voilà

    Merci d'avance pour tout renseigneùments sur le sujet

    Anne

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut rectification post précédent
    En fait en ce qui concerne ma question sur le createStreamARGBImage c'est une erreur de ma part. En effet, j'avais pas lu tout le code ou j'ai trouvé l'extrait de code que j'ai mis dans mon post précédent. Cette fonction est une fonction que l'auteur du code avait mise plus bas et que je n'avais pas vue.... Donc je retir ma question concernant cette fonction.... mais ma première question demeure.... si quelqu'un peut m'aider....?

  3. #3
    Membre actif
    Profil pro
    Analyste programmeur
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Finlande

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Par défaut
    Bonjour, tu peux créer des objets image de plusieurs facons, à partir d'une tableau de byte (par exemple apres une lecture d'un flux), un tableau ARGB, ou sinon une image vide :
    http://java.sun.com/javame/reference...eateImage(byte[],%20int,%20int)

    le tout est de savoir sous quelle forme tu recois tes données, par exemple si tu as sauvegardé tes images sous la forme de tableau (avec getRGB), tu peux les recréer avec un createImage

    j'espere que j'ai été clair...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    Je sais comment créer une image mais merci lol

    J'ai du mal exprimer ma question :

    Je pars d'une image que l'on nommera img1.png qui se trouve dans la memoire du tel, cad à l'url file:///root1/photos/img1.png
    Je veux afficher cette image à l'écran. Jusque là aucun souci, ca marche.

    Mais apres, j'ai voulu l'afficher à l'écran en lui ajoutant un effet sépia (les effets gérés dans la JSR 234 sont : "monochrome", "negative", "emboss", "sepia", "solarize", "redeyereduction")

    Dans l'appli de démo AdvancedMultimediaSupplements présent dans le WTK 2.0, j'ai vu comment on peut faire pour traiter des images placées directement dans le dossier "res" de l'appli, enfin là en l'occurence ils sont dans res/images. mais peut importe, là n'est pas le problème :
    dans ce code, ils font :

    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 void createProcessedImage() {
    
            try {
    
                MediaProcessor mp = GlobalManager.createMediaProcessor(
                        "image/" + format_array[indexInputImageFormat]);
    
                mp.addMediaProcessorListener(this);
    
                // create a OutputStream that will receive the resulting image
                outputStream = new ByteArrayOutputStream();
    
                 inputStream = getClass().getResourceAsStream(stream_array[indexInputImageFormat]);
                    mp.setInput(inputStream, MediaProcessor.UNKNOWN);
              
                mp.setOutput(outputStream);
    
    .......
    stream_array[indexInputImageFormat] ca vaut : "/images/lenna96x96.jpg" ou "/images/su15.jpg",ou "/images/mig15.png". Ce sont des images se trouvant dans leur dossier res/images
    moi j'ai donc essayé en mettant file:///root1/photos/img1.png, vu que je souhaite modifier des images du tel, càd des images se trouvant à l'url file:////...
    Ca compile mais ca me sort une erreur :
    java/lang/IllegalArgumentException: Invalid input stream.
    Et du coup je vois pas comment faire. Que dois-je mettre en inputstream pour que ca marche?

  5. #5
    Membre actif
    Profil pro
    Analyste programmeur
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Finlande

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Par défaut
    désolé ta question ne m'a pas paru tres claire sur le coup...(ca l'est un peu plus)

    pour etre plus clair, les images qui sont dans la demo, sont-elles dans un jar?
    si c'est le cas, ton soucis est "juste" la lecture d'un fichier, ca doit pas etre sorcier...(je dis ca...)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    non, les images de la démo sont dans le dossier res/images de l'appli.

    Par contre les miennes sont en mémoir téléphone. Or d'après ce que j'ai déjà fait j'ai pu voir que l'url des photos se trouvant sur le tel est : file:///root1/photos/
    et là tu as ttes tes images. Pour que ca marche avec l'emulateur, j'ai mis les images dans le dossier qu'il faut, mais avec le tel il prendra les bonnes images direct

    J'ai déjà récupéré les images, ca je sais le faire. Donc je peux en faire des tableaux de byte, et tout et tout, mais je sais pas comment en faire un inputstream qui serait ok pour que quand j'exécute, j'ai pas cette erreu : java/lang/IllegalArgumentException: Invalid input stream. et pour que ca marche bien sur.... en meme tps c'est le but, que ca marche lol

Discussions similaires

  1. [FPDF] problème avec les images dans un tableau dynamique
    Par GADSN dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 08/04/2009, 11h11
  2. problème avec les images
    Par wind_vinch dans le forum VB.NET
    Réponses: 9
    Dernier message: 28/03/2007, 22h23
  3. Réponses: 6
    Dernier message: 17/11/2005, 14h39
  4. TreeView - Problème avec les images
    Par LoicH dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/06/2005, 18h50

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