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 :

Réduire une image png


Sujet :

Java ME

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Réduire une image png
    Bonjour,

    Je souhaiterai réduire une image png en resolution (en fonction d'une résolution saisie par l'utilisateur). Le 'createImage' peut découper une image mais ne la réduit pas, j'ai regardé dans la java doc et je n'ai rien trouvé.
    Est ce que quelqu'un a une solution?
    Merci de vos réponses

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, quel API utilises tu ? MIDP 2.0 ?

    En MIDP il n'y a aucune methode pour pouvoir redimensionner des images. Il faut que tu mette en place l'algo toi meme. Renseigne toi sur les différentes méthodes d'interpolation (plus proche, bilinaire...).

    _Extrait le tableau RGB de l'image initiale avec Image.getRGB(...)
    _ traite le pour créer un nouveau tableau RGB correspondant a l'image redimensionnée
    _ créer l'image avec Image.createRGBImage(...)

    Après il existe peut etre des API auxiliaire qui font ca automatiquement.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé un code pour reduire une image sous J2ME :

    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
     
    private Image redimImage(Image _image, int _longueur, int _hauteur)
        {
            int sourceWidth = _image.getWidth();
            int sourceHeight = _image.getHeight();
            int redimWidth = _longueur;
            int redimHeight = _hauteur;
     
            if (redimHeight < 0)
                redimHeight = redimWidth * sourceHeight / sourceWidth;
     
            Image redimImage = Image.createImage(redimWidth, redimHeight);
            Graphics g = redimImage.getGraphics();
     
            for (int y = 0; y < redimHeight; y++)
            {
                for (int x = 0; x < redimWidth; x++)
                {
                    g.setClip(x, y, 1, 1);
                    int dx = x * sourceWidth / redimWidth;
                    int dy = y * sourceHeight / redimHeight;
                    g.drawImage(_image, x - dx, y - dy, Graphics.LEFT | Graphics.TOP);
                }
            }
     
            return Image.createImage(redimImage);
        }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, oui ce code va sans doute fonctionner mais attention :
    _ c'est une interpolation "au plus proche" donc pas forcément la plus jolie existante (la bilineaire ca donner des résultats bien meilleurs)
    _ ce code ne fonctionne que pour des image sans transparence ni alpha. En effet le createImage(int,int) crée de base une image mutable avec tout ces pixels blancs (c'est une grosse erreur du MIDP 2.0 qui devrait etre corrigé dans le MIDP 3.0). Ca réduit considérablement son utilité.
    _ Dessiner toute l'image a chaque pixel en la clippant n'est pas la solution la plus rapide.

    Donc il faut vraiment mieux passer par des tableaux RGB, le traitement va demander un peu plus de mémoire temporairement pour les tableaux (quoiqu'en fait meme pas car une image immutable est généré a partir de l'image mutable) mais la génération sera plus rapide et l'alpha sera géré.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/02/2006, 17h44
  2. [ImageMagick] Affichage d'une image png
    Par JavaAcro dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 06/02/2006, 09h13
  3. [Image] Décomposer une image png.
    Par Quintoff dans le forum 2D
    Réponses: 3
    Dernier message: 06/01/2006, 20h22
  4. [Cross-Browser] Couleur d'une image PNG
    Par [BkM-) dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/11/2005, 21h00
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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