Kingoteam commited on
Commit
5c1653b
·
verified ·
1 Parent(s): fa65fd9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -24
app.py CHANGED
@@ -1,9 +1,13 @@
1
- import gradio as gr
2
- import torch
3
  from PIL import Image
 
 
4
  import requests
5
  from io import BytesIO
6
 
 
 
7
  # بارگذاری مدل‌ها بر اساس استایل انتخابی
8
  def load_model(style_name):
9
  model = torch.hub.load(
@@ -23,39 +27,40 @@ def animegan2_transform(input_img, style_name):
23
  else:
24
  raise ValueError("فرمت تصویر ورودی صحیح نیست!")
25
 
26
- # تغییر رزولوشن به 1024 برای کیفیت بالا
27
  input_img = input_img.resize((460, 460))
28
 
29
- # بارگذاری مدل انتخابی
30
  model = load_model(style_name)
31
-
32
- # بارگذاری تابع face2paint
33
  face2paint_func = torch.hub.load(
34
  "bryandlee/animegan2-pytorch:main",
35
  "face2paint",
36
- size=1024, # رزولوشن بالا
37
  verbose=False
38
  )
39
 
40
- # اجرای مدل
41
  output_img = face2paint_func(model, input_img)
42
  return output_img
43
 
44
- # رابط کاربری Gradio
45
- iface = gr.Interface(
46
- fn=animegan2_transform,
47
- inputs=[
48
- gr.Image(type="pil", label="آپلود تصویر یا وارد کردن URL"),
49
- gr.Dropdown(
50
- ["face_paint_512_v1", "face_paint_512_v2", "paprika", "celeba_distill"],
51
- value="face_paint_512_v2",
52
- label="انتخاب استایل"
53
- )
54
- ],
55
- outputs=gr.Image(type="pil", label="تصویر انیمه (کیفیت بالا)"),
56
- title="AnimeGANv2 - تبدیل تصویر به انیمه با انتخاب استایل",
57
- description="تصاویر خود را با کیفیت بالا و استایل‌های مختلف به انیمه تبدیل کنید."
58
- )
 
 
 
 
 
59
 
60
  if __name__ == "__main__":
61
- iface.launch()
 
 
1
+ from fastapi import FastAPI, File, UploadFile, Form
2
+ from fastapi.responses import StreamingResponse
3
  from PIL import Image
4
+ import torch
5
+ import io
6
  import requests
7
  from io import BytesIO
8
 
9
+ app = FastAPI(title="AnimeGANv2 API")
10
+
11
  # بارگذاری مدل‌ها بر اساس استایل انتخابی
12
  def load_model(style_name):
13
  model = torch.hub.load(
 
27
  else:
28
  raise ValueError("فرمت تصویر ورودی صحیح نیست!")
29
 
 
30
  input_img = input_img.resize((460, 460))
31
 
 
32
  model = load_model(style_name)
 
 
33
  face2paint_func = torch.hub.load(
34
  "bryandlee/animegan2-pytorch:main",
35
  "face2paint",
36
+ size=1024,
37
  verbose=False
38
  )
39
 
 
40
  output_img = face2paint_func(model, input_img)
41
  return output_img
42
 
43
+ # Endpoint برای تبدیل تصویر
44
+ @app.post("/animegan2/")
45
+ async def transform_image(file: UploadFile = File(None), url: str = Form(None), style_name: str = Form("face_paint_512_v2")):
46
+ if file:
47
+ input_img = Image.open(file.file).convert("RGB")
48
+ elif url:
49
+ input_img = url
50
+ else:
51
+ return {"error": "لطفاً تصویر یا URL ارائه دهید!"}
52
+
53
+ # پردازش تصویر
54
+ output_img = animegan2_transform(input_img, style_name)
55
+
56
+ # ذخیره تصویر خروجی در بافر
57
+ img_byte_arr = io.BytesIO()
58
+ output_img.save(img_byte_arr, format='PNG')
59
+ img_byte_arr.seek(0)
60
+
61
+ # ارسال تصویر به صورت stream
62
+ return StreamingResponse(img_byte_arr, media_type="image/png")
63
 
64
  if __name__ == "__main__":
65
+ import uvicorn
66
+ uvicorn.run(app, host="0.0.0.0", port=8000)