uyen22 commited on
Commit
2e5d765
·
verified ·
1 Parent(s): d57458b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -19
app.py CHANGED
@@ -2,7 +2,6 @@ import gradio as gr
2
  import requests
3
  from PIL import Image
4
  import numpy as np
5
- import io
6
 
7
  # Hàm gọi API Magic Studio để thực hiện xóa đối tượng
8
  def erase_object(image, mask, access_token):
@@ -10,6 +9,8 @@ def erase_object(image, mask, access_token):
10
 
11
  # Chuyển đổi hình ảnh và mask thành định dạng thích hợp để gửi qua API
12
  image_file = ('image_file', ('image.jpg', image, 'image/jpeg'))
 
 
13
  mask_file = ('mask_file', ('mask.png', mask, 'image/png'))
14
 
15
  # Payload và headers
@@ -21,39 +22,32 @@ def erase_object(image, mask, access_token):
21
 
22
  if response.status_code == 200:
23
  # Trả về hình ảnh đã xóa đối tượng nếu thành công
24
- return response.content # Trả về nội dung hình ảnh từ API
25
  else:
26
  # Trả về thông báo lỗi nếu thất bại
27
  return f"Error: {response.status_code} - {response.text}"
28
 
29
  # Hàm xử lý cho Gradio
30
  def process(image, mask):
31
- # Chuyển đổi hình ảnh và mask từ Gradio thành dữ liệu nhị phân để gửi qua API
32
- image_bytes = io.BytesIO()
33
- mask_bytes = io.BytesIO()
34
- image.save(image_bytes, format="JPEG")
35
- mask.save(mask_bytes, format="PNG")
36
 
37
  # Gọi API với hình ảnh và mask (token được cố định trong code)
38
- access_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRfaWQiOiIyRGZQSm1sY1BLalBuaGh4ajBxSVpmQktfbS12RFhTc1NMRFNOX1gtZlVVIiwiZXhwIjoxNzI3MTY0MTcyLCJhcHBfbmFtZSI6IjE3NTMwODQiLCJtZXRhZGF0YSI6bnVsbCwiZ3JhbnRfdHlwZSI6ImNyZWQifQ.24oHGH9ial_gqeYrpUbYP68MwYly2ArzXbhbE1hGzQo' # Sửa token của bạn ở đây
39
 
40
- # Gửi hình ảnh và mask để xóa đối tượng
41
- result = erase_object(image_bytes.getvalue(), mask_bytes.getvalue(), access_token)
42
 
43
- # Trả về ảnh kết quả (nếu có)
44
- if isinstance(result, bytes):
45
- return Image.open(io.BytesIO(result))
46
- else:
47
- return None
48
 
49
  # Tạo giao diện Gradio
50
  with gr.Blocks() as demo:
51
  gr.Markdown("# Magic Eraser - Xóa đối tượng khỏi ảnh")
52
 
53
- # Input cho ảnh và cho phép vẽ mask trực tiếp lên ảnh
54
  with gr.Row():
55
- # Sử dụng gr.Image với chế độ vẽ mask
56
- image_input = gr.Image(type="pil", tool="sketch", label="Tải ảnh lên và vẽ mask")
57
 
58
  # Nút thực hiện xử lý xóa đối tượng
59
  submit_button = gr.Button("Xóa đối tượng")
@@ -64,7 +58,7 @@ with gr.Blocks() as demo:
64
  # Kết nối các thành phần với nhau
65
  submit_button.click(
66
  process,
67
- inputs=[image_input, image_input], # Sử dụng cùng một ảnh cho cả đầu vào và mask
68
  outputs=result_output
69
  )
70
 
 
2
  import requests
3
  from PIL import Image
4
  import numpy as np
 
5
 
6
  # Hàm gọi API Magic Studio để thực hiện xóa đối tượng
7
  def erase_object(image, mask, access_token):
 
9
 
10
  # Chuyển đổi hình ảnh và mask thành định dạng thích hợp để gửi qua API
11
  image_file = ('image_file', ('image.jpg', image, 'image/jpeg'))
12
+
13
+ # Mask là một hình ảnh do người dùng vẽ trực tiếp từ Gradio Sketchpad
14
  mask_file = ('mask_file', ('mask.png', mask, 'image/png'))
15
 
16
  # Payload và headers
 
22
 
23
  if response.status_code == 200:
24
  # Trả về hình ảnh đã xóa đối tượng nếu thành công
25
+ return response.json()
26
  else:
27
  # Trả về thông báo lỗi nếu thất bại
28
  return f"Error: {response.status_code} - {response.text}"
29
 
30
  # Hàm xử lý cho Gradio
31
  def process(image, mask):
32
+ # Chuyển đổi hình ảnh từ Gradio thành định dạng 'bytes'
33
+ image_bytes = image.convert("RGB").tobytes()
34
+ mask_bytes = mask.convert("RGB").tobytes()
 
 
35
 
36
  # Gọi API với hình ảnh và mask (token được cố định trong code)
37
+ access_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRfaWQiOiIyRGZQSm1sY1BLalBuaGh4ajBxSVpmQktfbS12RFhTc1NMRFNOX1gtZlVVIiwiZXhwIjoxNzI3MTY0MTcyLCJhcHBfbmFtZSI6IjE3NTMwODQiLCJtZXRhZGF0YSI6bnVsbCwiZ3JhbnRfdHlwZSI6ImNyZWQifQ.24oHGH9ial_gqeYrpUbYP68MwYly2ArzXbhbE1hGzQo'
38
 
39
+ result = erase_object(image_bytes, mask_bytes, access_token)
 
40
 
41
+ return result
 
 
 
 
42
 
43
  # Tạo giao diện Gradio
44
  with gr.Blocks() as demo:
45
  gr.Markdown("# Magic Eraser - Xóa đối tượng khỏi ảnh")
46
 
47
+ # Input cho ảnh và Sketchpad để vẽ mask
48
  with gr.Row():
49
+ image_input = gr.Image(type="pil", label="Tải ảnh lên")
50
+ mask_input = gr.Sketchpad(shape=(512, 512), label="Vẽ mask để xóa đối tượng")
51
 
52
  # Nút thực hiện xử lý xóa đối tượng
53
  submit_button = gr.Button("Xóa đối tượng")
 
58
  # Kết nối các thành phần với nhau
59
  submit_button.click(
60
  process,
61
+ inputs=[image_input, mask_input],
62
  outputs=result_output
63
  )
64