L'histoire de la création d'un outil pour charger une image avec Python ⇒ l'enregistrer sous un autre nom

Aperçu

Ami "Créez un outil pour récupérer un fichier image approprié dans un dossier contenant un grand nombre de fichiers image, copiez-le au même niveau que le dossier, puis renommez le fichier image avec le nom du dossier." Je suis fou

spécification

1. 1. Supposons que vous ayez un dossier comme celui-ci

Chaque dossier tel que "Kizuna AI" et "Mirai Akari" contient un grand nombre d'images et a un nom de fichier tel que 001 ~.

Dossier cible


images
 ├ KizunaAI
 │  ├ 001.jpg
 │  └ ....ipg
 │ 
 ├ MiraiAkari
 │  ├ 001.jpg
 │  └ ....ipg
 └ ....

2. Faites-le de cette façon

Copiez un fichier image approprié de chaque dossier d'image, placez-le dans la même hiérarchie que le dossier et renommez le nom de fichier en nom du dossier auquel il appartenait.

Dossier cible


images
 ├ KizunaAI
 │  ├ 001.jpg
 │  └ ....ipg
 ├ KizunaAI.jpg
 ├ MiraiAkari
 │  ├ 001.jpg
 │  └ ....ipg
 ├ MiraiAkari.jpg
 └ ....

c'est tout! !! !! !!

la mise en oeuvre

Pour le moment, je l'ai implémenté dans mon environnement Anaconda. Je "Je me suis demandé quel genre de contenu sérieux il s'agissait parce que je l'ai redemandé." キャプチャ.PNG

main.py


from PIL import Image
import os, glob

rootpath = "./images"
files = os.listdir(rootpath)
#Obtenez tous les répertoires sous rootpath
dirs = [f for f in files if os.path.isdir(os.path.join(rootpath, f))]
#Comme c'est un gros problème, il est affiché sur la console
print(dirs)    # ['dir1', 'dir2']
#Exécuter pour tous les répertoires
for dir in dirs :
    #Analyser tous les fichiers
    files = glob.glob(rootpath +"/"+ dir + "/*.*")
    #Tirez l'extension
    targetFile = files[0]
    root, ext = os.path.splitext(targetFile)
    #Image ouverte
    img = Image.open(targetFile)
    #Renommez et enregistrez directement sous le chemin racine
    img.save(rootpath +  '/' + dir + ext)

Faites-en un EXE

Anaconda est un peu ennuyeux, je vais donc le convertir en EXE et le faire fonctionner en un clic

1. 1. Installer Pyinstaller

C'est un excellent outil qui crée un EXE pour chaque environnement virtuel Anaconda. En d'autres termes, il semble que même les personnes qui n'ont pas d'environnement Python puissent l'exécuter avec celui-ci. J'ai du mal à cracher un EXE qui dépasse 300 Mo pour un code de moins de 1 Ko, mais je le pardonne car c'est pratique.

AnacondaPronpt


conda install -c conda-forge pyinstaller

En aparté, je préfère installer avec conda.

2. Faites-en un EXE

Soyez pressé

AnacondaPronpt


pyinstaller main.py --onefile

J'ai "fait (sans dire aucun bogue)" Ami "Je vais le faire!"

Autre

Mon ami "S'il y a un" [] "dans le nom du dossier, cela ne correspond pas, mais c'est" Si un !?" Ami "Eh bien, je vais le faire manuellement car il n'y en a que quelques-uns" Je "Gusei"

Si j'ai le temps, je publierai également cette version corrigée d'un bug.

Recommended Posts

L'histoire de la création d'un outil pour charger une image avec Python ⇒ l'enregistrer sous un autre nom
L'histoire de la création d'un pilote standard pour db avec python.
L'histoire de la création d'un module qui ignore le courrier avec python
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
[Python] [Windows] Enregistrer une capture d'écran sous forme d'image
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
Ne prenez pas une instance d'une classe d'exception Python directement comme argument de la classe d'exception!
J'ai essayé de trouver l'entropie de l'image avec python
[python] Remplacez le nom du fichier image par un numéro de série
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ②
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①
L'histoire de la création d'un bot de boîte à questions avec discord.py
Récupérez la source de la page à charger indéfiniment avec python.
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
Je veux découper uniquement le visage d'une image de personne avec Python et l'enregistrer ~ Détection de visage et rognage avec face_recognition ~
[Python] Si vous créez un fichier avec le même nom que le module à importer, une erreur d'attribut se produira.
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Préparez un environnement de test de charge distribué avec l'outil de test de charge Python Locust
[Python] Qu'est-ce qu'une tranche? Une explication facile à comprendre de son utilisation avec un exemple concret
L'histoire de la fabrication d'un moule immuable
L'histoire du traitement A du blackjack (python)
Comment couper la partie inférieure droite de l'image avec Python OpenCV
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Python] Créez un linebot pour écrire le nom et l'âge sur l'image
L'histoire de la création d'une caméra sonore avec Touch Designer et ReSpeaker
Démarrez la webcam, prenez une image fixe et enregistrez-la localement
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la
Faites attention au type lorsque vous créez un masque d'image avec Numpy
J'ai exécuté GhostScript avec python, divisé le PDF en pages et l'ai converti en image JPEG.
<Python> Un quiz pour convertir par lots les noms de fichiers séparés par une chaîne de caractères spécifique dans le cadre du nom de fichier
Histoire de créer un planétarium virtuel [jusqu'à ce que les débutants créent un modèle avec un script et parviennent à l'assembler]
Comment recadrer une image avec Python + OpenCV
Puisque python est lu comme "Pichon", il peut être exécuté avec "Pichon" (c'est une histoire)
Enregistrez le tableau numpy dans un fichier wav à l'aide du module wave
Traitement d'image? L'histoire du démarrage de Python pour
Crop Numpy.ndarray et enregistrez-le en tant qu'image
GAE --Avec Python, faites pivoter l'image en fonction des informations de rotation d'EXIF et importez-la dans Cloud Storage.
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
L'histoire de la fabrication de soracom_exporter (j'ai essayé de surveiller SORACOM Air avec Prometheus)
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.
L'histoire du serveur Web et du DAG d'Airflow, dont le chargement prend beaucoup de temps
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Jour 3 vers les nuages ...]
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
Une histoire sur la façon dont les utilisateurs de Windows 10 ont créé un environnement pour utiliser OpenCV3 avec Python 3.5
Un moyen simple de remplir le début de 0 en fonction du nombre de chiffres dans le nombre [Python]
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
C'était un peu difficile de faire flacon avec la version docker de nginx-unit
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste