Hallo Andreas,
probier mal das Skript mit einem Testbild.
Ich weiß jetzt nicht ob die Einrückung beim Reinkopieren hier kaputt gegangen ist

.
Seher wahrscheinlich muss auch erst die Python Umgebung einrichten. Bei mir läuft das ganz in einem Py-Envoriment.
Bei mir hat es mit einem Testbild geklappt.
Fit(s) kann man hier leider nicht einstellen.
Vielleicht hilft und klappt es.
convert_all_fits_to_png.py
import os
import glob
from astropy.io import fits
import matplotlib.pyplot as plt
import numpy as np
#

Ordnerpfad definieren (hier: aktueller Ordner)
folder = "/home/mathias/Astro" # <-- ggf. anpassen
#

Alle FITS-Dateien im Ordner suchen
fits_files = glob.glob(os.path.join(folder, "*.fits")) + glob.glob(os.path.join(folder, "*.fit"))
if not fits_files:
print("

Keine FITS-Dateien gefunden.")
exit()
#

Jede FITS-Datei in PNG konvertieren
for filepath in fits_files:
try:
# Daten laden
with fits.open(filepath) as hdul:
data = hdul[0].data
if data is None:
print(f"

Keine Bilddaten in {filepath}, überspringe...")
continue
#

Daten vorbereiten
if data.ndim == 2:
# Graustufenbild
plot_data = data
cmap = 'gray'
elif data.ndim == 3 and data.shape[0] == 3:
# RGB-Bild: (3, H, W) → (H, W, 3)
plot_data = data.transpose(1, 2, 0)
# Werte normieren, falls notwendig
plot_data = plot_data.astype(float)
plot_data -= plot_data.min()
plot_data /= plot_data.max() if plot_data.max() != 0 else 1
cmap = None
else:
print(f"

Datenformat nicht unterstützt ({data.shape}), überspringe {filepath}")
continue
#

Zielpfad
base = os.path.splitext(filepath)[0]
out_png = base + ".png"
#

Bild anzeigen und speichern
plt.figure(figsize=(10, 8))
plt.imshow(plot_data, cmap=cmap, origin='lower')
plt.title(os.path.basename(filepath))
plt.axis('off')
plt.tight_layout()
plt.savefig(out_png, bbox_inches='tight', pad_inches=0)
plt.close()
print(f"

Konvertiert: {filepath} → {out_png}")
except Exception as e:
print(f"

Fehler bei {filepath}: {e}")