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 :

[Images] Grosses images = Gros Lag ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut [Images] Grosses images = Gros Lag ?
    J'ai une soucis, dans le cadre de mon jeu j'affiche des images sur de grandes surfaces.

    Le problème c'est que si j'affiche une image en 1280*1024 la j'ai a peu près 1 à 2fps...

    J'ouvre mes images de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MPanel extends JPanel implements Runnable {
     
    	public static BufferedImage ifond;
     
    	public MPanel (MJeu jeu) {
     
    		try {
    			ifond = ImageIO.read(new File(GConstantes.I_FOND));
    		} catch (IOException e) {}
    	}
    et je les draw de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void paintComponent (Graphics g) {
     
    		super.paintComponent(g);
                    g.drawImage(ifond, 0, 0, null);
    }
    Y a t'il une meilleur façon de faire ?

  2. #2
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    je ne sais pas si c'est le cas, mais tu devrais peut-être les charger en mémoire d'abord et ensuite commencer à les afficher ...

    En revanche cette méthode te prendra énormément de mémoire .... alors c'et peut-être pas 1 bon conseil

    à toi de voir ..

  3. #3
    Membre confirmé Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    L'image fait faisant 85Ko (PNG) ce n'est pas ça qui va faire peter la ram

    Par contre je pensais que le fait d'utiliser ImageIO.read et de les mettre en BufferedImage la mettait en mémoire sachant que je fait ça dans le constructeur.

    Apparement ça n'est pas le cas ce qui me fait poser une seconde question :
    Comment mettre une image en memoire ?

  4. #4
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    tu n'en met qu'une seule en mémoire, moi je te propose de toutes les charger.

  5. #5
    Membre confirmé Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    Le bout de code que j'ai mit n'est qu'un exemple, mais mes images osnt toutes chargées de cette manière et dessinées comme ça.

    Pour les objets de mon jeu (meteores etc...) chaque classe (Meteore, MPirate...) a un attribut static image qui est initialisé au constructeur si il est nul, et cette image est récuparable par une simple methode qui la retourne :
    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
    public class MGrandMeteore implements MHostile {
     
    	private int vx, vy;
    	private static Image image;
    	private static int damagePower;
    	private int health;
    	private MJeu jeu;
    	private Rectangle rectangle;
    	private static int dx, dy;
     
    	public MGrandMeteore(MJeu jeu, Point p, int vx, int vy) {
     
    		this.jeu=jeu;
    		this.vx = vx;
    		this.vy = vy;
    		if (image==null){
    			try {
    				image = ImageIO.read(new File(GConstantes.I_GRAND_METEORE));
    				dx = (int)image.getWidth(null)/2;
    				dy = (int)image.getHeight(null)/2;
    				damagePower = GConstantes.METEORE_DAMAGE_POWER_GRAND;
    			} catch (IOException e) {}
    		}
    		this.rectangle=new Rectangle((int)p.getX(), (int)p.getY(), 2*dx, 2*dy);
    		this.health = GConstantes.METEORE_HEALTH_GRAND;
     
    	}
    Peut on faire mieux ?

  6. #6
    Membre confirmé Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    Citation Envoyé par NeptuS
    tu n'en met qu'une seule en mémoire, moi je te propose de toutes les charger.
    Explique moi comment faire je suis tout disiposé à essayer

  7. #7
    Membre confirmé Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    D'ailleurs quand j'y pense, je me demande :
    "Mais quelles instructions sont elles executées dans les temps de chargement des jeux ou des logiciels ?"

    Il faudrait peut être que je fasse une sorte de chargement avant mon jeu mais je ne voispas trop quoi y mettre. Je pourrait peut être charger les images en mémoire mais je ne vois pas comment mieux faire que ce que je fait actuelement.

    Quelqu'un aurait unen réponse ou une solution ?

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

Discussions similaires

  1. Grosses images dans un composant bien adapté
    Par BakaOnigiri dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 29/04/2009, 01h25
  2. [HTML] Afficher une grosse image avec zoom
    Par Amadou31 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 08/11/2007, 11h52
  3. [Configuration] Problème d'upload image grosse taille
    Par chicho dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/09/2007, 17h31
  4. Compression de grosses images
    Par vinzzzz dans le forum Imagerie
    Réponses: 3
    Dernier message: 24/04/2007, 14h36
  5. 1 image + 1 image = 1 image
    Par dleu dans le forum Delphi
    Réponses: 2
    Dernier message: 24/05/2006, 20h15

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