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

Python Discussion :

Renommer une image (nom générique), et les détruire par la suite.


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Renommer une image (nom générique), et les détruire par la suite.
    Bonjour,

    C'est donc le premier message que je pose, bien que j'ai visité de nombreuses fois les réponses apportées lorsqu'elles collaient avec ce que je recherchais, cependant je suis un peu bloqué actuellement.
    En effet, pour mieux que vous compreniez, je suis en Spécialité Informatique en Terminale S, et j'apprend donc en python, et mon projet est entièrement codé en python.
    Notre professeur nous a aidé en nous donnant les bases puis nous a encouragé à rechercher par nous même pour les projets.
    Bref, par le passé j'avais déjà appris un peu de C++, mais j'avais finis par laisser de côté par manque de temps, j'ai donc les bases, mais certaines choses ne me viennent pas (ou je ne trouve pas).

    Premièrement, mon programme de façon générale analyse une image, la parcourt dans son intégralité et en ressort une quantité x de pixels jugés anormaux (une image en niveaux de gris).

    Je précise que je travaille sous python 2.7.6 par soucis d'utilisation de la bibliothèque PIL.

    Lorsqu'il y a trop de pixels dits anormaux sur l'image, alors le programme rentre dans une boucle qui est censée :

    - Enregistrer l'image avec un nom générique dans un dossier spécifique.

    Or pour l'instant, j'ai bien écris l'intégralité du programme, donc il fonctionne mais je ne vois pas comment opérer cette étape, notamment le nom générique de fichiers.

    Un exemple :

    Mon programme reçoit d'un autre programme une image, qu'il doit traiter. Si l'image est jugé anormale elle est stockée. Donc, à la base l'image peut donc s'appeler Image26, cependant lorsqu'elle est enregistré dans le répertoire, celle-ci doit être renommée Image1. Mais le suivante doit être renommée elle Image2. Cependant je ne sais pas comment faire varier seulement une partie du nom d'un fichier.

    Car au début je voulais faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    imgOpen = Image.open(imgOpen)
    imgBMP = imgOpen.convert("L")
     
    ###On suppose que le programme tourne, détermine que l'image est abîmée, et choisit de l'enregistrer dans un répertoire donné
     
    if not os.path.exists('C:\Travail\Isn\DirTest'):
               os.makedirs('C:\Travail\Isn\DirTest')
     
    imgNomGen = "Image",imgNum
    imgNum = imgNum + 1 
    imgBMP.save('C:\Travail\Isn\DirTest\'imgNomGen,'.jpg')
    Mais évidemment cette dernière ligne ne fonctionne pas.

    Comment dois-je me débrouiller pour générer au fur et à mesure des noms d'images, afin qu'ils soient exploitables ?

    Deuxième question :

    Je souhaiterais que ce dossier qui se remplit de fichiers image, reparte à 0 lorsque la 20ème image enregistrée a été atteinte, c'est à dire qu'il écrasé l'image numéro 0, après la 1, la 2,...



    Voila c'est tout ce qui me vient en tête. Si jamais vous avez le temps lorsque vous me répondez, de me donner des pistes, plutôt que les réponses en dur. (Après, si vous avez le temps que pour la réponse, je m'en contenterais!)
    Si vous avez besoin de plus de précisions faites le moi savoir.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Le nom d'un fichier est une chaîne de caractère composée (répertoire, nom) qui pourra être utilisée dans un contexte particulier. Si vous voulez "calculer" le nom pour qu'il soit de la forme "imageNNN.jpg", le plus simple est de définir un template:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> IMAGE = 'image%d.jpg'
    >>>
    Le '%d' dit que ce template prend un entier en paramètre.
    Ca s'utilise comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> name = IMAGE % 1
    >>> print (name)
    image1.txt
    >>> for i in range(4):
    ...     print (IMAGE % i)
    ...
    image0.jpg
    image1.jpg
    image2.jpg
    image3.jpg
    Avec 'C:\Travail\Isn\DirTest' comme répertoire, et le nom du fichier, on pourra construire des noms de fichiers. Mais çà se complique un peu: '\' étant un caractère d’échappement, on doit être sûr qu'il ne soit pas interprété et transformé en autre chose.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> path = '\isn\travail\dirtest'
    >>> print (path)
    \isn    ravail\dirtest
    >>>
    Le '\t' qui passe à la moulinette du print devient TABulation.
    Soit on double les '\' soit on préfixe la chaîne de caractère par un 'r' pour signaler "raw string": ne pas interpréter!

    Reste a construire le nom du fichier à partir de path + name.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> path + name
    '\\travail\\isn\\dirtestimage1.jpg'
    >>>
    Ooops, il manque un '\' devant image1.jpg. On pourrait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> path + '\\' + name
    '\\travail\\isn\\dirtest\\image1.txt'
    >>>
    Mais on préfèrera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import os
    >>> os.path.join(path, name)
    '\\travail\\isn\\dirtest\\image1.txt'
    >>>
    Voilà pour les pistes.

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

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste un petit complément à la 1ère partie de la réponse de wiztricks:

    - si on veut pouvoir retrouver les images dans l'ordre de création en les listant dans l'ordre alphanumérique, on peut ajouter des zéros devant le nombre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(0,12):
        print "image%02d" % (i,)
    Ce qui affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    image00
    image01
    image02
    ...
    image08
    image09
    image10
    image11
    Bien sûr, il faut pouvoir prévoir le nombre maxi qu'on aura à créer.

    Si on veut que le nom de l'image générée revienne au même nombre périodiquement en écrasant la photo de même nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(0,50):
        print "image%02d" % (i%20)
    Ce qui affiche:

    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
    image00
    image01
    image02
    ...
    image18
    image19
    image00
    image01
    image02
    ...
    image18
    image19
    image00
    image01
    image02
    ...
    image08
    image09
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup de ton aide, j'ai bien tout compris, et tout roule désormais!

    Je repasserais peut-être si j'ai d'autres questions !

Discussions similaires

  1. (upload) renommer une image
    Par debutantasp dans le forum Langage
    Réponses: 1
    Dernier message: 04/06/2009, 09h13
  2. Renommer une image
    Par Interface dans le forum Langage
    Réponses: 2
    Dernier message: 13/01/2009, 16h44
  3. Réponses: 5
    Dernier message: 06/08/2008, 16h24
  4. [Upload] Renommer une image uploadée
    Par Empty_body dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2006, 06h51

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