Alibrown commited on
Commit
5f445bd
·
verified ·
1 Parent(s): f84cc4f

Create __pp.py

Browse files
Files changed (1) hide show
  1. __pp.py +62 -0
__pp.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ from PIL import Image
4
+ import gradio as gr
5
+ import numpy as np
6
+
7
+ # Der Kern der Anwendung: Blending-Funktion
8
+ def blend_images_cpu(image1_path, image2_path, alpha: float):
9
+ """
10
+ Verschmilzt zwei Bilder mit einem linearen Blending-Faktor (alpha).
11
+ Beide Bilder werden auf die Größe des ersten Bildes skaliert.
12
+ """
13
+
14
+ # Pfade, die von Gradio übergeben werden, sind temporäre Dateien.
15
+ try:
16
+ # 1. Bilder laden und in den RGBA-Modus konvertieren (für sauberes Blending)
17
+ img1 = Image.open(image1_path).convert("RGBA")
18
+ img2 = Image.open(image2_path).convert("RGBA")
19
+
20
+ # 2. Größe anpassen: img2 wird auf die Größe von img1 skaliert
21
+ if img1.size != img2.size:
22
+ img2 = img2.resize(img1.size)
23
+
24
+ # 3. Lineares Blending durchführen
25
+ # alpha=0.0 -> 100% Bild 1
26
+ # alpha=1.0 -> 100% Bild 2
27
+ blended_img = Image.blend(img1, img2, alpha)
28
+
29
+ # Gradio kann direkt ein PIL Image-Objekt zurückgeben
30
+ return blended_img
31
+
32
+ except Exception as e:
33
+ # Debugger/Coder: Diese Fehlerbehandlung hilft uns, Probleme zu finden!
34
+ print(f"Ein Fehler ist aufgetreten: {e}")
35
+ # Rückgabe eines leeren NumPy-Arrays oder einer Fehlermeldung
36
+ return np.zeros((200, 200, 3), dtype=np.uint8)
37
+
38
+ # Gradio Interface erstellen
39
+ if __name__ == "__main__":
40
+ gr.Interface(
41
+ title="CPU-Friendly Image Blending (Pillow)",
42
+ description="Lade zwei Bilder hoch und verschmelze sie mit einem einstellbaren Alpha-Faktor. (Reine CPU-Operation)",
43
+ fn=blend_images_cpu,
44
+ inputs=[
45
+ gr.Image(type="filepath", label="Bild 1 (Basisbild)"),
46
+ gr.Image(type="filepath", label="Bild 2 (Überlagerung)"),
47
+ gr.Slider(minimum=0.0, maximum=1.0, step=0.05, value=0.5, label="Blending-Faktor (Alpha)")
48
+ ],
49
+ outputs=[
50
+ gr.Image(label="Verschmolzenes Bild")
51
+ ],
52
+ # Beispiele, damit User direkt loslegen können
53
+ examples=[
54
+ [
55
+ gr.Example(
56
+ ["examples/bild_a.jpg", "examples/bild_b.jpg", 0.7],
57
+ label="Beispiel-Blend (70% Bild B)"
58
+ )
59
+ ]
60
+ ],
61
+ cache_examples=False,
62
+ ).launch(share=False)