Ich habe einen Ordner, dort liegt meine .py Datei, eine "export.csv" Datei und gaaaaanz viele .png Dateien.
Alle Bilder sind fast weiß, mit einem teilweise transparenten Hintergrund. Ich möchte jetzt über meine .py Datei die Bilder, welche in der .csv Datei liegen über einen RGB Code einfärben.
In der .csv Datei liegt jeweils der Name der .png Dateien in Spalte 1 und der RGB Farbcode in Spalte 2.
Hier ein Beispiel, aus Notepad++ rauskopiert:
NameDatei;RGBFarbcode
41012.png;226,0,116
Und hier ist mein Code:
Code: Alles auswählen
import csv
import os
from PIL import Image
# Lesen der CSV-Datei
with open('export.csv', 'r') as file:
reader = csv.reader(file, delimiter=';')
data = list(reader)
# Verarbeitung der Daten aus .CSV-Datei
for row in data:
file_name = row[0]
rgb_strings = row[1:] # Liste aller RGB-Farbkodierungen
# Überprüfe RGB Code in .CSV-Datei
for i, rgb_string in enumerate(rgb_strings):
try:
rgb = tuple(map(int, rgb_string.split(',')))
except ValueError:
print(f"Ungültige RGB-Farbkodierung in Zeile {data.index(row) + 1}, Spalte {i + 2}: {rgb_string}")
continue
# Öffnen des Bildes
image = Image.open(file_name)
# weiße Stellen färben
data = image.getdata()
new_data = []
for item in data:
if item == (255, 255, 255):
new_data.append(rgb)
else:
new_data.append(item)
image.putdata(new_data)
# Verkleinern der Kopie des Bildes um 50%
image = image.resize((round(image.width / 2), round(image.height / 2)))
# Speichern der Kopie des Bildes
new_file_name = os.path.join(r"C:\Users\A200017577\Desktop\AM\PP Heatmap Grafik\Gebietszuweisung\AN Karte\Test", f"{file_name.split('.')[0]}_colored.png")
os.makedirs(os.path.dirname(new_file_name), exist_ok=True)
if os.path.exists(new_file_name):
os.remove(new_file_name)
image.save(new_file_name)
print("Alle Bilder wurden modifiziert und gespeichert.")
Mit diesem Code wird zwar eine Kopie der Bildes erstellt, jedoch werden keine Weiß-Teile der .png eingefärbt.
Ich programmiere ich Spyder (Python 3.9).
Dies ist außerdem mein erster Code, also bitte fragt, falls Ihr weitere Informationen braucht.
Ich bedanke mich vielmals für eure Antworten
Liebe grüße
Kevin