Wie verwalten Sie die mit Ihrer mobilen Kamera (Smartphone) aufgenommenen Fotos? In meinem Fall kopiere ich ein Bild nach einer gewissen Aufnahme auf meinen PC und lösche es von meinem Smartphone, damit ich nicht so viele Daten wie möglich auf meinem Smartphone belasse. Wenn Sie das Foto jedoch von Ihrem Smartphone löschen, wird die Seriennummer des Dateinamens zurückgegeben. Wenn Sie versuchen, es auf Ihren PC zu kopieren, wird eine Datei mit demselben Namen erstellt, was problematisch ist.
Um das Problem des Dateinamensnebels zu lösen, werde ich eine Methode einführen, mit der die auf den PC kopierten Bilddateien unter Verwendung des Aufnahmedatums und der Aufnahmedauer gemeinsam umbenannt werden können.
$ pip3 install Pillow
rename_images.py
from PIL import Image
from PIL.ExifTags import TAGS
from pathlib import Path
import datetime
# https://www.lifewithpython.com/2014/12/python-extract-exif-data-like-data-from-images.html
def get_exif_of_image(file):
"""Get EXIF of an image if exists.
Funktion zum Abrufen von EXIF-Daten des angegebenen Bildes
@return exif_table Exif Ein Wörterbuch, in dem Daten gespeichert werden
"""
im = Image.open(file)
#Exif-Daten abrufen
#Wenn es nicht existiert, endet es so wie es ist. Gibt ein leeres Wörterbuch zurück.
try:
exif = im._getexif()
except AttributeError:
return {}
#Da die Tag-ID nicht gelesen werden kann, dekodieren Sie sie
#In der Tabelle aufbewahren
exif_table = {}
for tag_id, value in exif.items():
tag = TAGS.get(tag_id, tag_id)
exif_table[tag] = value
return exif_table
#Geben Sie den Pfad des Ordners auf der PC-Seite an, der das Image enthält
for filename in Path("/path/to/images").glob("DSC_*.JPG"):
exif = get_exif_of_image(filename)
if "DateTimeOriginal" in exif:
# strftime()Geben Sie das Format des neuen Namens mit an
new_name = Path(filename).with_name(datetime.datetime.strptime(exif["DateTimeOriginal"], "%Y:%m:%d %H:%M:%S").strftime("IMG_%Y%m%d_%H%M%S.JPG"))
print(f"{filename} \n -> {new_name}")
filename.rename(new_name)
else:
print(f"[WARNING] {filename}: no EXIF header")
Extrahieren Sie das Aufnahmedatum und die Aufnahmedauer aus dem EXIF-Header der Bilddatei, erstellen Sie einen neuen Dateinamen im angegebenen Format basierend auf Aufnahmedatum und -zeit und benennen Sie ihn um.
for filename in Path("/path/to/images").glob("DSC_*.JPG"):Der Teil listet die in einem bestimmten Ordner enthaltenen Bilddateien auf.``DSC_*.JPG``Bitte passen Sie den Teil an das Dateiformat an, das von der Kameraanwendung Ihres Smartphones generiert wurde. Dieses Muster ist ein Beispiel für Xperia.
Verwenden Sie `` get_exif_of_image () ``, um die EXIF-Header-Informationen abzurufen. Diese Funktion wird von der folgenden Seite übernommen. m (_ _) m
[Python-Tipps: Ich möchte Exif-Daten eines Bildes - Leben mit Python erhalten](https://www.lifewithpython.com/2014/12/python-extract-exif-data-like-data-from-images.html)
Da das Aufnahmedatum und die Aufnahmezeit mit dem Namen "DateTimeOriginal" aufgezeichnet werden, wird die Zeichenfolge für Datum und Uhrzeit vom Modul "datetime" analysiert. Dieses Aufnahmeformat sollte einheitlich sein, sodass das Argument "strptime ()" nicht für jede Kamera angepasst werden muss.
Erstellen Sie basierend auf diesem Analyseergebnis einen neuen Dateinamen. Ändern Sie das Argument von `` strftime () ``, wenn Sie möchten. Es ist jedoch am besten, Namen im gleichen Format wie das Original zu vermeiden, z. B. "DSC_% Y% m% d_% H% M% S.JPG".
Klicken Sie hier, um die Bedeutung der Formatzeichenfolgen von `` strptime () `` und `` strftime () `` anzuzeigen.
[8.1. Datetime --- Grundlegende Datums- und Zeittypen - Python 3.6.12-Dokumentation](https://docs.python.org/ja/3.6/library/datetime.html#strftime-strptime-behavior)
## Ausführungsbeispiel
Das Protokoll wird wie unten gezeigt angezeigt. Stellen Sie sicher, dass die Datei korrekt umbenannt wurde.
/path/to/images/DSC_0001.JPG -> /path/to/images/IMG_20190928_135805.JPG /path/to/images/DSC_0004.JPG -> /path/to/images/IMG_20191104_172704.JPG /path/to/images/DSC_0005.JPG -> /path/to/images/IMG_20191106_174423.JPG /path/to/images/DSC_0006.JPG -> /path/to/images/IMG_20191106_174752.JPG /path/to/images/DSC_0007.JPG -> /path/to/images/IMG_20191106_174808.JPG /path/to/images/DSC_0009.JPG -> /path/to/images/IMG_20191213_180056.JPG /path/to/images/DSC_0010.JPG -> /path/to/images/IMG_20191213_180103.JPG /path/to/images/DSC_0011.JPG -> /path/to/images/IMG_20191213_180112.JPG
# Ergänzung
Wenn möglich, denke ich, ist es besser, es zum Zeitpunkt der Aufnahme auf der Smartphone-Seite umzubenennen.
Sie können diese Apps auf Android verwenden. Ich werde die App von nun an weiter nutzen.
[Benennen Sie den Dateinamen automatisch um, wenn Sie ein Foto mit "DSC Auto Rename" | Forget-so aufnehmen](http://wasure.net/dscautorename/#i)
Recommended Posts