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

Programmation multimédia/Jeux Python Discussion :

Problème importation d'image pygame [Python 3.X]


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Problème importation d'image pygame
    Bonjour, je rencontre actuellement un problème d'importation d'image en python avec pygame. D'habitude quand je le fais ça marche sans soucis mais là ça ne veut pas et je ne sais pas pourquoi...

    J'entre dans la commande pygame.image.load() l'adresse de mon image. Elle se trouve rangée dans plusieurs dossier donc j'indique le chemin sans soucis (pas la première fois que je le fais) sauf que là la console me retourne l'erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    image = pygame.image.load(filename)
    FileNotFoundError: No such file or directory.
    J'ai alors pensé que j'avais du faire une erreur dans le chemin de l'image alors pour vérifier je l'ai mis dans le répertoire courant de mon programme. Il me sort la même erreur... L'image est au format PNG et à une dimension de 675x781.

    le code :


    fichier main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import pygame
    import jeu
    import os
     
     
    if __name__ == "__main__":
        pygame.init()
        jeu = jeu.Jeu()
        jeu.run()

    fichier jeu :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import pygame
    import pytmx
    import pyscroll
    import joueur
    import os
     
    class Jeu:
     
        def __init__(self):
            #générer la fenêtre du jeu
            self.ecran = pygame.display.set_mode((800,800))#range l'"cran dans l'objet courant self
            pygame.display.set_caption("Jeu de Matthieu")
     
            #charger la carte (tmx)
     
            tmx_data = pytmx.util_pygame.load_pygame("carte\depart_jeu.tmx")#permet d'importer et charger la carte
            carte_data = pyscroll.data.TiledMapData(tmx_data)#récupère les données tmx pour extraire la carte
            carte_layer = pyscroll.orthographic.BufferedRenderer(carte_data, self.ecran.get_size())#contient tous les calques de la carte regroupés sur la surface
            carte_layer.zoom = 2 #permet de zoomer sur la carte
     
     
            #générer un joueur
            self.joueur = joueur.Joueur()
     
            #dessiner le groupe de calque
            self.groupe = pyscroll.PyscrollGroup(map_layer = carte_layer, default_layer = 2)#default_layer permet de donner le niveau de calque d'un calque comme le perso
            self.groupe.add(self.joueur)
     
        def run(self):
            #générer la boucle du jeu
            jeu = True
     
            while jeu:
     
                self.groupe.draw(self.ecran)#dessine les calques sur l'écran
                pygame.display.flip()
     
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        jeu = False
     
            pygame.quit()

    fichier joueur :

    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
    import pygame
    import os
     
    class Joueur(pygame.sprite.Sprite):
     
        def __init__(self):
            super().__init__()
            self.sprite_sheet = pygame.image.load("nouvel essai jeu de role/personnage/_PNG/1/1_IDLE_000.png")
            self.image = self.get_image(0,0)
            self.rect = self.image.get_rect()
     
     
        def get_image(self, x, y):
            image = pygame.Surface([32,32])
            image.blit(self.sprite_sheet, (0,0), (x, y, 32, 32))
            return image
    Merci beaucoup pour le temps pris pour lire et pour toutes les réponses que je pourrais avoir

    P.S : je tiens à préciser que j'ai essayer de changer le sens des slash dans l'importation d'image mais ça n'a rien changé

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 20 778
    Points : 35 870
    Points
    35 870
    Par défaut
    Salut,

    donc j'indique le chemin sans soucis (pas la première fois que je le fais) sauf que là la console me retourne l'erreur suivante
    Vous donnez un nom de fichier relatif à un répertoire par défaut qui n'est pas (toujours) le répertoire du script principal.
    La variable globale __file__ permet de récupérer le chemin du script principal, d'en extraire le répertoire et d'interpoler le chemin vers vos données.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    alors j'ai testé et tous mes fichier main/jeu/joueur sont bien répertoriés au même endroit. Les dossiers contenant les images sont un niveau en dessous donc théoriquement je ne devrais pas avoir de soucis pour les récupérer. Mais le problème persiste toujours malheureusement. J'ai essayé en mettant dans mon dossier au même niveau que mes fichiers de code une autre image provenant d'une source différente et même sur celle-là ça ne marche pas, je ne comprend pas...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 20 778
    Points : 35 870
    Points
    35 870
    Par défaut
    Citation Envoyé par Goulthard Voir le message
    Les dossiers contenant les images sont un niveau en dessous
    Un niveau en dessous de quel répertoire?
    Le répertoire courant sera affiché via print(os.getcwd()).
    Celui du script principal via print(__file__).

    Les chemins relatifs sont "calculés" à partir du répertoire courant (et non de celui du script).

    A vous d'essayer de comprendre un peu (et de revoir le chapitre sur les fichiers de votre tuto. préféré pour réviser tout ça).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ah surement une lacune de ma part, je pensais que le répertoire courant était là où se trouvait le script principal.

    Pour faire simple j'ai comme ceci :

    scripts et dossier image (au même niveau).

    je veux récupérer une image qui se trouve dans un dossier contenu dans le dossier image. Ca je sais le faire car d'habitude ça marche sans soucis hors là il me retourne l'erreur que je vous ai donné.

    J'ai essayé de mettre l'image là ou se trouve les scripts et le dossier image, j'ai bien sur changé le chemin d'appel de l'image mais là encore il ne trouve pas l'image... pourtant j'ai bien vérifié que mes 3 scripts étaient répertoriés aux même endroits

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 20 778
    Points : 35 870
    Points
    35 870
    Par défaut
    Citation Envoyé par Goulthard Voir le message
    Ah surement une lacune de ma part, je pensais que le répertoire courant était là où se trouvait le script principal.
    C'est une lacune à combler et je vous ai donné un chemin à suivre...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Je vais regarder à ça, merci

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    ok le répertoire courant est donc le dossier où est exécuté le script

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 20 778
    Points : 35 870
    Points
    35 870
    Par défaut
    Citation Envoyé par Goulthard Voir le message
    ok le répertoire courant est donc le dossier où est exécuté le script
    Si vous arrivez a cette conclusion, c'est que vous n'avez pas bien regardé ce qu'affichent les "print" de os.getcwd() et de __file__ ou pris l'initiative de changer le répertoire courant avant de lancer le script.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Eh bien getcwd() retourne le répertoire courant qui est le dossier où le script est exécuté d'après https://waytolearnx.com/2019/04/comm...en-python.html

    os.path.basename(path) retourne le nom du répertoire

    os.path.realpath(__file__) retourne le chemin du script

    par contre j'ai résolu mon problème. Le problème ne venait pas de l'importation de mon personnage mais de la carte. Le problème d'importation était lié au fait que mon fichier était corrompu du coup il ne trouvait plus la carte que je lui demandais d'appeler.

    Je passerai le sujet en résolu après votre réponse si j'ai bien compris les notions de répertoire (je les ai testées dans mon programme) ou non

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 20 778
    Points : 35 870
    Points
    35 870
    Par défaut
    Citation Envoyé par Goulthard Voir le message
    Eh bien getcwd() retourne le répertoire courant qui est le dossier où le script est exécuté d'après https://waytolearnx.com/2019/04/comm...en-python.html
    Le répertoire courant est celui de l'utilisateur. Il peut être modifié avec os.chdir. Ca n'a rien à voir avec le dossier dans lequel est le script (donné par __file__).
    => Ce n'est pas ce que vous racontez et pas du tout ce qui est raconté à l'URL mentionnée.

    Citation Envoyé par Goulthard Voir le message
    Le problème d'importation était lié au fait que mon fichier était corrompu du coup il ne trouvait plus la carte que je lui demandais d'appeler.
    Si le fichier était corrompu, ça ne dirait pas "FileNotFoundError"... Mais à force de taper sur tout ce qui bouge pour faire tomber le programme en marche sans être attentif aux messages d'erreurs qui ont peut être changé, vous pouvez conclure sur des âneries...

    Citation Envoyé par Goulthard Voir le message
    Je passerai le sujet en résolu après votre réponse si j'ai bien compris les notions de répertoire (je les ai testées dans mon programme) ou non
    Vous aurez compris lorsque vous saurez utiliser cette notion pour penser comment coder avec les contraintes qui en découlent... Et vous le maîtriserez lorsque vous saurez l'exposer correctement. Pour le reste, c'est vous qui apprenez à programmer au rythme qui vous va...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ah bah j'ai vraiment du mal avec cette notion alors. Pour le fichier corrompu c'est un supposition de ma part car en fait j'utilise un logiciel qui s'appelle Tiled pour créer des cartes et quand j'ai ouvert ma carte elle était remplie de cas rouge que je n'avais pas placé là. Sachant que moi je pensais que le problème venait du personnage et que non je n'ai pas non plus tapé sur tout ce qui bouge.

    Merci pour vos réponses, je passe le sujet en résolu dorénavant.

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

Discussions similaires

  1. [Python 3.X] Problème d'importation d'image avec Tkinter
    Par plijyf2 dans le forum Général Python
    Réponses: 5
    Dernier message: 07/01/2022, 19h56
  2. [Python 3.X] Problème d'affichage image Pygame
    Par Patouillou dans le forum Programmation multimédia/Jeux
    Réponses: 11
    Dernier message: 09/04/2019, 13h33
  3. [PrestaShop] problème d'import des images depuis csv sur OVH (Erreur lors de la copie de l'image)
    Par blase201 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/08/2014, 16h39
  4. Problème import image
    Par paintbox dans le forum Windows Forms
    Réponses: 18
    Dernier message: 06/10/2011, 15h54
  5. [FLASH MX] Problème pour défilement images
    Par Buzhug dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2004, 21h09

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