Spaces:
Sleeping
Sleeping
first commit
Browse files- .vscode/settings.json +3 -0
- app.py +30 -0
- requirements.txt +1 -0
.vscode/settings.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"python.languageServer": "None"
|
| 3 |
+
}
|
app.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from rembg import remove # 匯入移除背景的函式
|
| 2 |
+
from PIL import Image # 匯入 pillow 影像操作模組
|
| 3 |
+
import gradio as gr
|
| 4 |
+
|
| 5 |
+
def remove_bg(img, x_off, y_off, scale):
|
| 6 |
+
x = int(x_off * img.width / 100) # 計算橫向位移像數
|
| 7 |
+
y = int(y_off * img.height / 100) # 計算縱向位移像數
|
| 8 |
+
width = img.width - x # 計算實際寬度
|
| 9 |
+
height = img.height - y # 計算實際高度
|
| 10 |
+
size = min(width, height) # 取寬高較短者
|
| 11 |
+
img = img.crop((x, y, x + size, y + size)) # 切割正方形區域
|
| 12 |
+
if scale < 100:
|
| 13 |
+
size = int(size * scale / 100)# 依照指定比例縮放
|
| 14 |
+
img = img.resize((size, size))
|
| 15 |
+
img_nb = remove(img) # 移除背景
|
| 16 |
+
img.save('img.png') # 儲存影像檔
|
| 17 |
+
img_nb.save('img_nb.png') # 儲存去背影像檔
|
| 18 |
+
return (img, img_nb)
|
| 19 |
+
|
| 20 |
+
no_bg_if = gr.Interface(
|
| 21 |
+
fn=remove_bg,
|
| 22 |
+
inputs=[
|
| 23 |
+
gr.Image(label='輸入影像', type='pil'),
|
| 24 |
+
gr.Slider(label='橫向切割位移百分比'),
|
| 25 |
+
gr.Slider(label='縱向切割位移百分比'),
|
| 26 |
+
gr.Slider(label='縮放比例', value=100, step=5)],
|
| 27 |
+
outputs=[gr.Gallery(label='處理後影像')]
|
| 28 |
+
)
|
| 29 |
+
|
| 30 |
+
no_bg_if.launch()
|
requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
rembg
|