我正在尝试将 Gradio 应用程序转换为 Flask api。 在 Gradio 应用程序中,它使用图像、文本等组件。 我必须更改该组件才能请求表单数据。 然而,我在图像处理方面遇到了困难。 我需要任何帮助。
这是我的代码。
cloth_image = gr.Image(label="Your label...", type="pil") cloth_mask_image = gr.Image(label="Your label...", type="pil")
如何通过
cloth_image = request.files['cloth_image']
的预处理获得与gr.Image组件相同的返回值
如果您只需要服务器上的图像那么您可以直接使用
cloth_image = Image.open( request.files["cloth_image"] )
最少的工作代码:
from flask import Flask, request
from PIL import Image
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
if "cloth_image" in request.files:
img = request.files["cloth_image"] # it has method .read() so it can be treated as file-like object
cloth_image = Image.open(img) # it can use file-like object instead of filename
return """
<form method="POST" enctype="multipart/form-data">
<input type="file" name="cloth_image">
<button type="submit">Send</button>
</form>"""
if __name__ == '__main__':
app.run()
但是如果您需要将其发送回来,那么您可能需要使用
io.BytesIO
将图像保存在内存中的类似文件对象中,将其转换为base64
并将其发送为
'<img src="data:image/png;base64,{}">'.format(data)