dramp77 commited on
Commit
1635a40
·
verified ·
1 Parent(s): 59c84f2

updateed center

Browse files
Files changed (1) hide show
  1. app.py +30 -37
app.py CHANGED
@@ -457,15 +457,30 @@ def position_logic_old(image_path, canvas_size, padding_top, padding_right, padd
457
  def position_logic_none(image, canvas_size):
458
  target_width, target_height = canvas_size
459
  aspect_ratio = image.width / image.height
460
- if aspect_ratio > 1:
 
 
 
461
  new_width = target_width
462
  new_height = int(new_width / aspect_ratio)
463
- else:
 
 
 
464
  new_height = target_height
465
  new_width = int(new_height * aspect_ratio)
 
 
 
 
 
466
  image = image.resize((new_width, new_height), Image.LANCZOS)
 
 
467
  x = (target_width - new_width) // 2
468
  y = (target_height - new_height) // 2
 
 
469
  log = [{"action": "resize_and_center", "new_size": f"{new_width}x{new_height}", "position": f"{x},{y}"}]
470
  return log, image, x, y
471
 
@@ -1124,13 +1139,8 @@ def process_single_image(
1124
  temp_image_path = os.path.join(output_folder, f"temp_{filename}")
1125
  image_with_no_bg.save(temp_image_path, format='PNG')
1126
 
1127
- # Menerapkan snap settings ke padding values
1128
- effective_padding_top = 0 if snap_to_top else padding_top
1129
- effective_padding_bottom = 0 if snap_to_bottom else padding_bottom
1130
- effective_padding_left = 0 if snap_to_left else padding_left
1131
- effective_padding_right = 0 if snap_to_right else padding_right
1132
-
1133
- # Cetak status snap untuk debugging
1134
  if snap_to_left:
1135
  print(f"Snap to Left active: Forcing padding_left = 0 (original: {padding_left})")
1136
  if snap_to_right:
@@ -1139,16 +1149,10 @@ def process_single_image(
1139
  print(f"Snap to Top active: Forcing padding_top = 0 (original: {padding_top})")
1140
  if snap_to_bottom:
1141
  print(f"Snap to Bottom active: Forcing padding_bottom = 0 (original: {padding_bottom})")
1142
-
1143
- logs, cropped_img, x, y = position_logic_old(
1144
- temp_image_path, canvas_size,
1145
- effective_padding_top,
1146
- effective_padding_right,
1147
- effective_padding_bottom,
1148
- effective_padding_left,
1149
- use_threshold=True, bg_method=bg_method, is_person=snap_to_bottom,
1150
- snap_to_top=snap_to_top, snap_to_left=snap_to_left, snap_to_right=snap_to_right
1151
- )
1152
  if bg_choice == 'white':
1153
  canvas = Image.new("RGBA", canvas_size, "WHITE")
1154
  elif bg_choice == 'custom':
@@ -1180,24 +1184,13 @@ def process_single_image(
1180
  new_canvas = Image.new("RGBA", canvas_size, dom_col)
1181
  else:
1182
  new_canvas = Image.new("RGBA", canvas_size, (0, 0, 0, 0))
1183
- available_width = canvas_size[0] - padding_left - padding_right
1184
- target_height = canvas_size[1] - padding_top - padding_bottom
1185
- rs_w, rs_h = rotated_subject.size
1186
- scale_factor = target_height / rs_h
1187
- new_width_h = int(rs_w * scale_factor)
1188
- if new_width_h > available_width:
1189
- scale_factor = available_width / rs_w
1190
- new_width = available_width
1191
- new_height = int(rs_h * scale_factor)
1192
- else:
1193
- new_width = new_width_h
1194
- new_height = target_height
1195
- rotated_subject = rotated_subject.resize((new_width, new_height), Image.LANCZOS)
1196
- new_x = padding_left + (available_width - new_width) // 2
1197
- new_y = padding_top + (target_height - new_height) // 2
1198
- new_canvas.paste(rotated_subject, (new_x, new_y), rotated_subject)
1199
  canvas = new_canvas
1200
- logs.append({"action": "rotate_final", "rotation": rotation, "direction": direction})
1201
  out_ext = "jpg" if output_format == "JPG" else "png"
1202
  out_filename = f"{os.path.splitext(filename)[0]}.{out_ext}"
1203
  out_path = os.path.join(output_folder, out_filename)
@@ -1667,7 +1660,7 @@ def preset_snap_rules(filename, image_path=None):
1667
  with gr.Blocks(theme='allenai/gradio-theme') as iface:
1668
  gr.Markdown("## Image BG Removal with Rotation, Watermark, Twibbon & Classifications for Padding Override")
1669
  with gr.Row():
1670
- input_files = gr.File(label="Upload (Image(s)/ZIP)", file_types=[".zip", ".rar", "image"], interactive=True)
1671
  watermark = gr.File(label="Watermark (Optional)", file_types=[".png"])
1672
  twibbon = gr.File(label="Twibbon (Optional)", file_types=[".png"])
1673
  sheet_file = gr.File(label="Upload Sheet (.xlsx/.csv)", file_types=[".xlsx", ".csv"], interactive=True)
 
457
  def position_logic_none(image, canvas_size):
458
  target_width, target_height = canvas_size
459
  aspect_ratio = image.width / image.height
460
+
461
+ # Tentukan ukuran yang tepat dengan mempertahankan aspect ratio
462
+ # dan memastikan gambar muat dalam canvas
463
+ if aspect_ratio > 1: # landscape
464
  new_width = target_width
465
  new_height = int(new_width / aspect_ratio)
466
+ if new_height > target_height:
467
+ new_height = target_height
468
+ new_width = int(new_height * aspect_ratio)
469
+ else: # portrait
470
  new_height = target_height
471
  new_width = int(new_height * aspect_ratio)
472
+ if new_width > target_width:
473
+ new_width = target_width
474
+ new_height = int(new_width / aspect_ratio)
475
+
476
+ # Resize gambar dengan ukuran baru
477
  image = image.resize((new_width, new_height), Image.LANCZOS)
478
+
479
+ # Posisi tengah canvas
480
  x = (target_width - new_width) // 2
481
  y = (target_height - new_height) // 2
482
+
483
+ print(f"Image centered: size={new_width}x{new_height}, position=({x},{y})")
484
  log = [{"action": "resize_and_center", "new_size": f"{new_width}x{new_height}", "position": f"{x},{y}"}]
485
  return log, image, x, y
486
 
 
1139
  temp_image_path = os.path.join(output_folder, f"temp_{filename}")
1140
  image_with_no_bg.save(temp_image_path, format='PNG')
1141
 
1142
+ # Selalu gunakan position_logic_none untuk centering gambar
1143
+ # Kode snap masih disimpan untuk kompatibilitas
 
 
 
 
 
1144
  if snap_to_left:
1145
  print(f"Snap to Left active: Forcing padding_left = 0 (original: {padding_left})")
1146
  if snap_to_right:
 
1149
  print(f"Snap to Top active: Forcing padding_top = 0 (original: {padding_top})")
1150
  if snap_to_bottom:
1151
  print(f"Snap to Bottom active: Forcing padding_bottom = 0 (original: {padding_bottom})")
1152
+
1153
+ # Gunakan position_logic_none untuk memastikan semua gambar diletakkan di tengah
1154
+ image = Image.open(temp_image_path)
1155
+ logs, cropped_img, x, y = position_logic_none(image, canvas_size)
 
 
 
 
 
 
1156
  if bg_choice == 'white':
1157
  canvas = Image.new("RGBA", canvas_size, "WHITE")
1158
  elif bg_choice == 'custom':
 
1184
  new_canvas = Image.new("RGBA", canvas_size, dom_col)
1185
  else:
1186
  new_canvas = Image.new("RGBA", canvas_size, (0, 0, 0, 0))
1187
+
1188
+ # Gunakan position_logic_none untuk rotated image juga
1189
+ _, rotated_sized_img, rotated_x, rotated_y = position_logic_none(rotated_subject, canvas_size)
1190
+
1191
+ new_canvas.paste(rotated_sized_img, (rotated_x, rotated_y), rotated_sized_img)
 
 
 
 
 
 
 
 
 
 
 
1192
  canvas = new_canvas
1193
+ logs.append({"action": "rotate_final_centered", "rotation": rotation, "direction": direction})
1194
  out_ext = "jpg" if output_format == "JPG" else "png"
1195
  out_filename = f"{os.path.splitext(filename)[0]}.{out_ext}"
1196
  out_path = os.path.join(output_folder, out_filename)
 
1660
  with gr.Blocks(theme='allenai/gradio-theme') as iface:
1661
  gr.Markdown("## Image BG Removal with Rotation, Watermark, Twibbon & Classifications for Padding Override")
1662
  with gr.Row():
1663
+ input_files = gr.File(label="Upload (Image(s)/ZIP/RAR)", file_types=[".zip", ".rar", "image"], interactive=True)
1664
  watermark = gr.File(label="Watermark (Optional)", file_types=[".png"])
1665
  twibbon = gr.File(label="Twibbon (Optional)", file_types=[".png"])
1666
  sheet_file = gr.File(label="Upload Sheet (.xlsx/.csv)", file_types=[".xlsx", ".csv"], interactive=True)