Astridkraft commited on
Commit
87dbb73
·
verified ·
1 Parent(s): cb4adb5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -4
app.py CHANGED
@@ -197,7 +197,7 @@ def scale_image_and_mask_together(image, mask, target_size=512):
197
 
198
  print(f"📐 Gemeinsame Skalierung: {original_width}x{original_height} → {new_width}x{new_height} (Skalierung: {scale:.4f})")
199
 
200
- # Skaliere Bild und Maske
201
  scaled_image = image.resize((new_width, new_height), Image.Resampling.LANCZOS)
202
  scaled_mask = mask.resize((new_width, new_height), Image.Resampling.NEAREST)
203
 
@@ -206,7 +206,8 @@ def scale_image_and_mask_together(image, mask, target_size=512):
206
  padded_image = Image.new("RGB", (target_size, target_size), (0, 0, 0))
207
  padded_mask = Image.new("L", (target_size, target_size), 0)
208
 
209
- # Zentrierte Position berechnen
 
210
  x_offset = (target_size - new_width) // 2
211
  y_offset = (target_size - new_height) // 2
212
 
@@ -247,7 +248,7 @@ def composite_edited_region(original_image, inpaint_result, original_mask, paddi
247
  """
248
  print(f"🎨 Starte korrektes Compositing...")
249
 
250
- # 1. Extrahiere den bearbeiteten Bereich aus dem Inpaint-Ergebnis (ohne Padding)
251
  x_offset = padding_info['x_offset']
252
  y_offset = padding_info['y_offset']
253
  scaled_width = padding_info['scaled_width']
@@ -260,7 +261,7 @@ def composite_edited_region(original_image, inpaint_result, original_mask, paddi
260
 
261
  print(f" Bearbeiteter Bereich extrahiert: {unpainted_region.size}")
262
 
263
- # 2. Skaliere den bearbeiteten Bereich zurück auf Originalgröße
264
  original_size = (padding_info['original_width'], padding_info['original_height'])
265
  edited_region_fullsize = unpainted_region.resize(original_size, Image.Resampling.LANCZOS)
266
 
@@ -268,6 +269,7 @@ def composite_edited_region(original_image, inpaint_result, original_mask, paddi
268
 
269
  # 3. Erstelle eine weiche Maske für nahtloses Einfügen
270
  # Erweitere die Originalmaske leicht für weiche Übergänge
 
271
  soft_mask = original_mask.copy()
272
 
273
  # Für weiche Kanten: Erweitere die Maske um 5 Pixel
 
197
 
198
  print(f"📐 Gemeinsame Skalierung: {original_width}x{original_height} → {new_width}x{new_height} (Skalierung: {scale:.4f})")
199
 
200
+ # Skaliere Bild und Maske getrennt voneinander aber proportional
201
  scaled_image = image.resize((new_width, new_height), Image.Resampling.LANCZOS)
202
  scaled_mask = mask.resize((new_width, new_height), Image.Resampling.NEAREST)
203
 
 
206
  padded_image = Image.new("RGB", (target_size, target_size), (0, 0, 0))
207
  padded_mask = Image.new("L", (target_size, target_size), 0)
208
 
209
+ # Zentrierte Position berechnen
210
+ #um zu wissen, wo genau das herunterskalierte Originalbild auf das leere schwarze Bild legt werden muss, damit es perfekt mittig sitzt. Ohne diese Berechnung würde das Bild falsch (z.B. in der Ecke) platziert werden.
211
  x_offset = (target_size - new_width) // 2
212
  y_offset = (target_size - new_height) // 2
213
 
 
248
  """
249
  print(f"🎨 Starte korrektes Compositing...")
250
 
251
+ # 1. Extrahiere den bearbeiteten Bereich (die Veränderung) aus dem Inpaint-Ergebnis (ohne Padding)
252
  x_offset = padding_info['x_offset']
253
  y_offset = padding_info['y_offset']
254
  scaled_width = padding_info['scaled_width']
 
261
 
262
  print(f" Bearbeiteter Bereich extrahiert: {unpainted_region.size}")
263
 
264
+ # 2. Skaliere den bearbeiteten Bereich zurück auf Originalgröße .resize() ist eine Python Funktion, aus der Pillow-Bibliothek die das skaliert.
265
  original_size = (padding_info['original_width'], padding_info['original_height'])
266
  edited_region_fullsize = unpainted_region.resize(original_size, Image.Resampling.LANCZOS)
267
 
 
269
 
270
  # 3. Erstelle eine weiche Maske für nahtloses Einfügen
271
  # Erweitere die Originalmaske leicht für weiche Übergänge
272
+ # Dieser gesamte Codeblock erzeugt weiche Übergänge, damit der bearbeitete Bereich nicht wie eine harte, ausgeschnittene "Collage" im Originalbild aussieht. Die Kombination aus MaxFilter (erweitert die Maske) und GaussianBlur (verwischt die Kante) erzeugt eine weiche Alpha-Maske für sanftes Alpha Blending.
273
  soft_mask = original_mask.copy()
274
 
275
  # Für weiche Kanten: Erweitere die Maske um 5 Pixel