在 Flask 中创建一个接收 Base64 格式图片的接口

要在 Flask 中创建一个接收 Base64 格式图片的接口,你需要以下步骤:

  1. 创建一个 Flask 应用。
  2. 定义一个接收 POST 请求的路由。
  3. 在请求中解析 Base64 编码的图片数据。
  4. 将 Base64 数据解码为二进制数据,并保存到文件(可选)。

以下是一个示例代码,展示了如何实现这一功能:

from flask import Flask, request, jsonify
import base64
import osapp = Flask(__name__)# 定义保存图片的目录
UPLOAD_FOLDER = 'uploads'
if not os.path.exists(UPLOAD_FOLDER):os.makedirs(UPLOAD_FOLDER)@app.route('/upload_image', methods=['POST'])
def upload_image():try:# 从请求中获取JSON数据data = request.get_json()# 验证数据中包含'image'字段if 'image' not in data:return jsonify({'error': 'No image data provided'}), 400# 获取Base64编码的图片数据image_base64 = data['image']# 去掉可能的头部信息(如:data:image/png;base64,)if ',' in image_base64:image_base64 = image_base64.split(',')[1]# 将Base64数据解码为二进制数据image_data = base64.b64decode(image_base64)# 定义保存图片的文件名(这里使用UUID保证唯一性,你也可以根据需要修改)import uuidfile_name = f"{uuid.uuid4()}.png"file_path = os.path.join(UPLOAD_FOLDER, file_name)# 将二进制数据写入文件with open(file_path, 'wb') as file:file.write(image_data)return jsonify({'message': 'Image uploaded successfully', 'file_name': file_name}), 201except Exception as e:return jsonify({'error': str(e)}), 500if __name__ == '__main__':app.run(debug=True)

解释

  1. 创建 Flask 应用:使用 Flask(__name__) 创建一个 Flask 应用实例。
  2. 定义保存图片的目录:设置 UPLOAD_FOLDER 变量为保存图片的目录,并在目录不存在时创建它。
  3. 定义路由:使用 @app.route('/upload_image', methods=['POST']) 定义一个处理 POST 请求的路由。
  4. 解析 Base64 数据
    • 从请求中获取 JSON 数据。
    • 验证 JSON 数据中包含 image 字段。
    • 去掉可能的 Base64 头部信息(如 data:image/png;base64,)。
    • 使用 base64.b64decode 将 Base64 数据解码为二进制数据。
  5. 保存图片
    • 生成一个唯一的文件名(使用 uuid)。
    • 将二进制数据写入文件。
  6. 返回响应
    • 如果上传成功,返回包含成功消息和文件名的 JSON 响应。
    • 如果出现异常,返回包含错误信息的 JSON 响应。

测试

你可以使用 curl 或 Postman 来测试这个接口。例如,使用 curl 发送一个包含 Base64 编码图片的 POST 请求:

curl -X POST http://127.0.0.1:5000/upload_image \
-H "Content-Type: application/json" \
-d '{"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}'

请确保将 data:image/png;base64,... 替换为实际的 Base64 编码图片数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文笔记】X-Former: Unifying Contrastive and Reconstruction Learning for MLLMs

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: X-Former: Unifying Contr…

《在1688的数字海洋中,如何用API网罗一家店铺的所有商品?》

想象一下,你是一位船长,航行在1688这个电商的数字海洋上。你的任务是探索一家神秘的店铺岛屿,并且用你的API魔法网,网罗岛上所有的商品宝藏。不用担心,即使你不是海贼王,有了代码的力量,你也能成…

uniapp:sqlite最详细教程,小白可直接粘贴复制

新建uniapp项目,需要4个页面, loading 启动页:打开数据库,判断数据表是否存在,表内是否有数据,创建数据表的逻辑。 register 注册页:数据表已存在,但是没有数据,需要进入该页面注册第一条数据 index 首页:展示数据列表内的数据,可修改默认,添加新数据 edit 编辑:编…

pytorch安装GPU版本,指定设备

安装了GPU版本的pytorch的时候,想要使用CPU,怎么操作呢? 设置环境变量: set TF_FORCE_GPU_ALLOW_GROWTHfalse set CUDA_VISIBLE_DEVICES如果想要使用固定序号的GUP设备,则指定ID set CUDA_VISIBLE_DEVICES0 # 使用第…

vuetify学习笔记(v-app和v-responsive)

我最近在学习vuetify3,我以前是用element plus和taiwind css。vuetify的一个好处是,它不仅是一个向element plus一样提供好用的组件库,而且还提供了向taiwind css一样的原子类,可以通过类名方便的定义组建的样式。以前element plu…

ReactOS系统中搜索给定长度的空间地址区间中的二叉树

搜索给定长度的空间地址区间 //搜索给定长度的空间地址区间 MmFindGap MmFindGapTopDown PVOID NTAPI MmFindGap(PMADDRESS_SPACE AddressSpace,ULONG_PTR Length,ULONG_PTR Granularity,BOOLEAN TopDown );PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,…

数据结构:堆的应用

堆排序 假定有一组数据极多的数,让我们进行排序,那我们很容易想到一种经典的排序方法,冒泡排序,我们对冒泡排序的时间复杂度进行分析: 显然,冒泡排序的时间复杂度是O(n^2),当数据量…

Trimble三维激光扫描开启工业元宇宙的安全“智造”之路-沪敖3D

以下文章来源于天宝Trimble Field Systems ,作者小甜宝 工业制造是一个固有危险性的行业,人身伤害、物理损坏和长时间的维修都可能导致项目停滞。因此,确保安全不仅仅对工作人员重要,更是保证项目顺利进行关键。 在自动化程度提…

Kafka Tool(Offset Explorer)在windows下配置访问kerberos认证Kafka

Author : Spinach | GHB Link : http://blog.csdn.net/bocai8058文章目录 前言准备配置文件配置软件参数及启动 前言 Offset Explorer(以前称为Kafka Tool)是一个用于管理和使用Apache Kafka集群的图形用户界面(GUI)应用程序。…

ubuntu查看系统版本命令

查看系统版本指令 在 Ubuntu 操作系统中,您可以使用多个命令来查看系统版本。以下是一些常用的命令: lsb_release -a 这个命令会显示详细的 Ubuntu 版本信息,包括发行版名称、版本号、代号等。lsb_release -acat /etc/os-release 这个命令会显…

海外盲盒系统搭建:海外市场带来的全新机遇

我国盲盒在海外迅速火爆,今年以来销量一直呈现高增长态势,各类盲盒在海外受到消费者疯抢,供不应求,海外盲盒市场发展前景巨大! 在开拓海外市场中,我国盲盒先后在泰国、越南等国家取得了显著的成绩&#xf…

小米15、SU7 Ultra、新平板,粮厂「科技春晚」定了

继高通发布骁龙 8 至尊版两天后,给一众网友脖子盼僵的小米 15,终于是迎来了官宣定档! 就在昨天,小米官方宣布「小米 15 系列暨小米澎湃 OS 2 新品发布会」将于 10 月 29 日举行。 而这场发布会不光会有年度新机小米 15 系、全新澎…

量子纠错--shor‘s 码

定理1 (量子纠错的条件) C是一组量子编码,P是映射到C上的投影算子。假设是一个算子元素描述的量子操作,那么基于量子编码C,存在一个能对抗描述的噪声的纠错操作R的充要条件是 对某个复元素厄米矩阵成立。 将算子元素称为导致的错误。如果这样…

JavaScript 第26章:Angular 基础

Angular是由Google维护的一个开源框架,用于构建Web应用程序。Angular提供了一套完整的解决方案来构建动态Web应用,它利用TypeScript语言来编写组件,并提供了一系列内置指令和管道来简化前端开发工作。 Angular 概述 Angular是一个完整的MVC…

【C++】类和对象(附题)

目录 一、类的定义 1.1.类定义格式 1.2.访问限定符 1.3.类域 二、实例化 2.1.实例化概念 2.2.对象大小 三、this指针 附加题:(增进对this指针的理解) 1.下面程序编译运行结果是() 2.下面程序编译运行结果是&…

昆虫种类识别数据集昆虫物种分类数据集YOLO格式VOC格式 目标检测 机器视觉数据集

一、数据集概述 数据集名称:10类昆虫图像数据集 数据集包含了多种农作物中常见的昆虫种类,包括军虫、豆蓟象、红蜘蛛、水稻瘿蚊、水稻卷叶蛾、水稻叶蝉、水稻水蚤、小麦薄翅薄翅蔗蝇、白背飞虱和黄稻螟。 1.1可能应用的领域 农业害虫监测与防控&#x…

基于 Python 的机器学习模型部署到 Flask Web 应用:从训练到部署的完整指南

目录 引言 技术栈 步骤一:数据预处理 步骤二:训练机器学习模型 步骤三:创建 Flask Web 应用 步骤四:测试 Web 应用 步骤五:模型的保存与加载 保存模型 加载模型并在 Flask 中使用 步骤六:Web 应用…

最新 client-java 调用 k8s ApiServer

创建权限绑定 sa-role.yaml apiVersion: v1 kind: ServiceAccount metadata:name: my-admin #账号名namespace: kube-system--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true…

超越OpenAI GPT-4o,Yi-Lightning指南:中国AI大模型新巅峰

Yi-Lightning 是零一万物公司最新发布的旗舰模型,它在国际权威盲测榜单 LMSYS 上超越了硅谷知名 OpenAI GPT-4o-2024-05-13、Anthropic Claude 3.5 Sonnet,排名世界第六,中国第一,这标志着中国大模型首次实现超越 OpenAI GPT-4o 的…

node.js下载安装以及环境配置超详细教程【Windows版本】

node安装以及环境变量配置 Step1:选择版本进行安装Step2:安装Node.jsStep3:环境配置Step4:检查node.js是否成功安装Step5:npm修改下载镜像 Step1:选择版本进行安装 Node.js 安装包及源码下载地址为 Node.…