Hör auf, Online-Tools mit deinen Fotos zu vertrauen - baue stattdessen diesen Python-Hintergrundentferner
Haben Sie schon einmal ein Foto hochgeladen, um den Hintergrund zu entfernen, und sich gefragt, wo es gespeichert wird und was später damit passiert? Online-Tools zum Entfernen des Hintergrunds sind bequem zu nutzen, aber Bequemlichkeit geht oft auf Kosten der Kontrolle. Statt Ihre Fotos also auf fremde Server hochzuladen, bauen wir einen Hintergrundentferner, der vollständig auf Ihrem eigenen Computer läuft.
Was wir bauen
Wir werden eine kleine Desktop-Anwendung erstellen, die:
- Ermöglicht Ihnen die Auswahl eines Bildes
- Entfernt den Hintergrund mithilfe von KI
- Speichert ein transparentes PNG
- Läuft völlig offline
Alles geschieht lokal auf Ihrem Rechner. Für dieses Projekt verwenden wir:
- Python-Programmiersprache (Version 3.11, 3.12 oder 3.13)
- rembg zur Hintergrundentfernung
- Tkinter für eine GUI
rembg ist eine Open-Source-Python-Bibliothek und ein Kommandozeilenwerkzeug, das automatisch Bildhintergründe mithilfe von Deep Learning entfernt. Es kapselt ein trainiertes neuronales Netzwerk, das Vordergrundobjekte (wie Menschen oder Gegenstände) vom Hintergrund trennen kann.
Wir halten die Einrichtung minimal. Wenn Sie es noch nicht haben, installieren Sie die neueste Version von Python von python.org. Sie können die Installation überprüfen, indem Sie dies in Ihrem Terminal ausführen:
python --versionErstellen Sie dann einen Projektordner. Öffnen Sie Ihr Terminal (PowerShell oder Terminal auf macOS/Linux) und führen Sie aus:
mkdir background-remover
cd background-removerInnerhalb des Projektordners sollten Sie eine Python-virtuelle Umgebung erstellen und aktivieren. Sobald dies erledigt ist, installieren Sie die notwendigen Pakete für dieses Projekt.
pip install rembg[cpu] pillowrembg wird unsere Hintergrundentfernungs-Engine sein, während Pillow uns hilft, mit Bildern umzugehen. Wir sind mit der anfänglichen Einrichtung fertig. Jetzt können wir damit beginnen, etwas Code zu schreiben.
Der einfachste Hintergrundentferner
Erstelle eine neue Datei in deinem background-remover-Ordner. Nennen wir sie app.py. Öffne sie in deinem Editor und füge dies hinzu:
from rembg import remove
from PIL import Image
input_path = "input.jpg"
output_path = "output.png"
with Image.open(input_path) as img:
result = remove(img)
result.save(output_path)Das ist der gesamte Hintergrundentferner. Lassen Sie uns verstehen, was passiert.
Zuerst importieren wir die beiden Bibliotheken, die wir installiert haben. Dann definieren wir die Eingabe- und Ausgabe-Pfade, einschließlich des Bilddateinamens. In diesem Fall befindet es sich im aktuellen Verzeichnis. Legen Sie ein Bild mit dem Namen input.jpg in denselben Ordner wie Ihr Skript.
Lass uns das Ergebnis als output.png speichern, weil PNG-Dateien Transparenz unterstützen. JPEG nicht. Wenn der Hintergrund entfernt wird, bleibt ein Bild mit transparenten Pixeln übrig. Das funktioniert nur richtig mit PNG.
Der nächste Teil macht drei Dinge:
- Öffnet das Bild.
- Sendet es durch das Hintergrundentfernungsmodell.
- Speichert das verarbeitete Bild.
Die with-Anweisung stellt sicher, dass die Datei nach der Verarbeitung ordnungsgemäß geschlossen wird. Es ist einfach gute Praxis.
Jetzt ist es Zeit, das Skript auszuführen. Geben Sie in Ihrem Terminal ein:
python app.pyBeim ersten Start von rembg wird das Programm sein Modell herunterladen. Das kann einen Moment dauern. Danach ist die Verarbeitung schnell und vollständig lokal. Wenn alles funktioniert hat, wird output.png in deinem Ordner erscheinen, mit entferntem Hintergrund.
Lass es sich wie ein echtes Werkzeug anfühlen
Im Moment funktioniert das Skript, aber es ist starr. Es verarbeitet nur „input.jpg“ und gibt immer „output.png“ aus. Das ist für eine Demo in Ordnung, aber echte Tools akzeptieren Eingaben vom Benutzer. Lass uns ein Upgrade machen. Aktualisiere deine app.py wie folgt:
import sys
import os
from rembg import remove
from PIL import Image
if len(sys.argv) < 2:
print("Usage: python app.py <image_path>")
sys.exit(1)
input_path = sys.argv[1]
if not os.path.exists(input_path):
print("Error: File does not exist.")
sys.exit(1)
filename, _ = os.path.splitext(input_path)
output_path = f"{filename}_no_bg.png"
with Image.open(input_path) as img:
result = remove(img)
result.save(output_path)
print(f"Background removed successfully: {output_path}")Keine Angst vor dem Code, da ich alles erklären werde. Zuerst haben wir sys.argv[1]. Dies liest, was auch immer Sie nach python app.py eingeben. Zum Beispiel, wenn Sie ausführen:
python app.py my_image.jpgDann wird sys.argv[1] zu my_image.jpg. Dann haben wir einige grundlegende Überprüfungen. Wir prüfen, ob der Benutzer ein Kommandozeilenargument übergeben hat oder nicht, indem wir die Länge von sys.argv bestimmen. Außerdem prüfen wir, ob das vom Benutzer übergebene Argument korrekt ist oder nicht. Bei einem falschen Pfad oder Dateinamen warnen wir den Benutzer.
Endlich haben wir ein automatisches Benennungssystem, das „_no_bg.png“ zum Eingabedateinamen hinzufügt und es nach der Hintergrundentfernung als Ausgabedatei speichert. Führen Sie das Programm erneut aus, aber geben Sie diesmal Ihren Dateinamen als Argument ein:
python app.py your_image.jpgMach daraus eine echte Desktop-App
Die Befehlszeilenversion ist leistungsstark. Aber nicht jeder möchte ein Terminal öffnen und Befehle eingeben. Lassen Sie uns dies in eine grafische Python-Anwendung mit Tkinter verwandeln.
Tkinter wird mit Python ausgeliefert, daher benötigen wir keine neuen Abhängigkeiten. Wir werden die gleiche Hintergrundentfernungslogik wiederverwenden und eine visuelle Ebene darauf hinzufügen.
Lass uns eine neue Datei mit dem Namen gui_app.py erstellen. Erstelle ein einfaches Fenster:
import tkinter as tk
root = tk.Tk()
root.title("Background Remover")
root.geometry("400x400")
root.mainloop()Versuche, es auszuführen.
python gui_app.pySie werden ein kleines leeres Fenster sehen. Das ist unsere Basis. Jetzt lassen Sie die Benutzer ein Bild über einen Datei-Chooser auswählen. Aktualisieren Sie die Datei:
import tkinter as tk
from tkinter import filedialog, messagebox
from rembg import remove
from PIL import Image, ImageTk
import os
selected_file = None
def select_file():
global selected_file
file_path = filedialog.askopenfilename(
filetypes=[("Image Files", "*.jpg *.jpeg *.png *.webp")]
)
if file_path:
selected_file = file_path
status_label.config(text=f"Selected: {os.path.basename(file_path)}")
img = Image.open(file_path)
img.thumbnail((250, 250))
tk_img = ImageTk.PhotoImage(img)
preview_label.config(image=tk_img)
preview_label.image = tk_img
root = tk.Tk()
root.title("Background Remover")
root.geometry("400x400")
select_button = tk.Button(root, text="Select Image", command=select_file)
select_button.pack(pady=10)
status_label = tk.Label(root, text="No file selected")
status_label.pack()
# Create a label specifically for the image preview
preview_label = tk.Label(root)
preview_label.pack(pady=10)
root.mainloop()
Jetzt können Sie auf eine Schaltfläche klicken und ein Bild auswählen. Der Dateiname erscheint in dem Fenster, zusammen mit einer schönen Vorschau. Verbinden wir nun die tatsächliche Verarbeitung. Fügen Sie diese Funktion oberhalb von root.mainloop() hinzu:
def remove_background():
if not selected_file:
messagebox.showerror("Error", "Please select an image first.")
return
filename, _ = os.path.splitext(selected_file)
output_path = f"{filename}_no_bg.png"
try:
with Image.open(selected_file) as img:
result = remove(img)
result.save(output_path)
messagebox.showinfo("Success", f"Saved to:\n{output_path}")
except Exception as e:
messagebox.showerror("Error", str(e))Dann fügen Sie die Schaltfläche hinzu:
remove_button = tk.Button(root, text="Remove Background", command=remove_background)
remove_button.pack(pady=10)Platziere es nach der obigen Funktion. Führe nun das Programm aus. Wähle ein Bild aus. Drücke die "Hintergrund entfernen"-Taste. Die Ausgabe wird im gleichen Ordner gespeichert.
Das war's. Sie haben ein Skript in eine Desktop-Anwendung verwandelt.
Weitere Möglichkeiten zum Aufrüsten
Ich habe versucht, es minimal zu halten. Wenn Sie möchten, gibt es unendlich viele Möglichkeiten, dies zu verfeinern. Zum Beispiel können Sie auch eine Vorschau des Ergebnisses einfügen und sie nebeneinander im selben Fenster ansehen. Sie können eine Stapelverarbeitung hinzufügen, damit Sie den Hintergrund mehrerer Bilder auf einmal entfernen können. Sie können mehr visuelle Features hinzufügen, wie eine Fortschrittsanzeige, oder sogar Drag-and-Drop für den Komfort des Benutzers hinzufügen.
Eine weitere großartige Idee für dieses Projekt ist, es in eine eigenständige ausführbare Datei mit PyInstaller umzuwandeln. Auf diese Weise müssen Sie das Programm nicht mehr über die Kommandozeile ausführen. Sie können die App einfach doppelklicken, um sie zu starten, wie jede normale Software.
Das nächste Mal, wenn Sie einen einfachen Hintergrund für ein Bild entfernen müssen, müssen Sie sich keine Sorgen machen, Bilder auf Drittanbieterseiten hochzuladen oder Begrenzungen der kostenlosen Stufe zu erreichen. Denn Sie haben jetzt Ihr eigenes Werkzeug. Die endgültige, ausgearbeitete Version finden Sie auf meinem GitHub.




