将使用React-Webcam拍摄的图像发送到FastAPI服务器

首先

我在使用React的Web应用程序中调查了相机拍摄功能。
我不仅仅是做了拍摄,还试着将拍摄的图像发送到服务器。

使用React进行相机拍摄

如果要在 React 中使用相机,目前(截至2023年10月)有以下库可供选择。

    • react-webcam

https://github.com/mozmorris/react-webcam

react-html5-camera-photo

https://github.com/mabelanger/react-html5-camera-photo

react-camera-pro

https://github.com/purple-technology/react-camera-pro

由于其下载量和GitHub上的星星数量都超过其他选项,因此基本上建议从react-webcam开始考虑。

使用 React-webcam

只需要简单使用react-webcam,没有任何困难的问题,如下所述,只需使用即可。
如果要获取拍摄的图像,只需调用getScreenShot即可,这也很容易使用。
https://github.com/mozmorris/react-webcam#methods

将图像发送到服务器

只需将用React-webcam拍摄的图像直接显示出来是没有问题的,但如果要发送到服务器,则会有问题。

    • base64をBlobに変換する

 

    Fileオブジェクトを作成する

需要。
关于这个问题,只要搜索一下就会有很多信息。

    • https://qiita.com/ns777/items/24f1a48fd9301ff3dcdb

 

    https://zenn.dev/nana/articles/688636736ac1e9

示威活动

我尝试在 Code Sandbox 上使使用 react-webcam 拍摄的图像发送代码能够运行。
链接:https://codesandbox.io/s/react-webcam-example-tfq9cc

接收图像的服务器

为了接收上述发送的图像,我们将使用FastAPI创建一个服务器,以接收和保存图像。
要创建一个使用FastAPI上传文件的API,您可以参考以下链接,简单地创建它。
https://fastapi.tiangolo.com/tutorial/request-files/

这次,为了将上传的文件保存为JPEG格式,我们将通过PIL来进行保存。

import time
from PIL import Image
from fastapi import FastAPI, UploadFile

app = FastAPI()

@app.post("/image")
async def save_image(file: UploadFile):
    image = Image.open(BytesIO(await file.read()))
    image.save(f"{int(time.time() * 100000)}.jpg")
    return "ok"

仅需一种选项:提供以下参考资料的汉语本地化释义。

参考资料的中文翻译

    • https://dev.classmethod.jp/articles/get-image-with-react-webcam-and-typescript/

 

    • https://zenn.dev/shinobuy/articles/170e5fef9aa780

 

    https://blog.usize-tech.com/take-photo-by-react-app/