python flask 上传图片并转存为png
时间: 2024-10-24 22:05:44 浏览: 52
Python中使用Flask、MongoDB搭建简易图片服务器
在Python Flask框架中处理文件上传并转换为PNG格式,通常涉及到以下几个步骤:
1. 首先,在Flask应用中,你需要安装必要的库,如`Flask`, `werkzeug`(内置用于处理multipart文件) 和 `Pillow` (用于图像操作,包括转换格式)。你可以使用pip进行安装:
```
pip install flask werkzeug pillow
```
2. 创建一个路由来接收文件上传请求,可以设置一个POST请求,并检查是否包含名为`file`的文件数据:
```python
from flask import Flask, request, send_file
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_image():
if 'file' not in request.files:
return 'No file part'
image_file = request.files['file']
if image_file:
# 图片验证(比如检查大小、类型)
image_data = image_file.read()
```
3. 对于接收到的二进制数据,你可以使用Pillow库将其转换为PNG格式:
```python
try:
with Image.open(BytesIO(image_data)) as img:
buffered = io.BytesIO()
img.save(buffered, format='PNG')
png_data = buffered.getvalue()
except Exception as e:
print(f"Error processing image: {e}")
return 'Failed to convert image'
# 返回转换后的PNG数据
response = send_file(
BytesIO(png_data),
attachment_filename=image_file.filename,
mimetype='image/png',
as_attachment=True
)
response.headers.add('Content-Disposition', 'attachment', filename=image_file.filename)
return response
```
4. 当用户发送POST请求到`/upload` URL并提供一个有效的图片文件时,这个函数会接收、转换并返回PNG格式的图片。
阅读全文