You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Django的InMemoryUploadedFile转换为PIL或CV2格式图片?

将Django的InMemoryUploadedFile转换为PIL或OpenCV格式

转换为PIL格式

InMemoryUploadedFile本身是类文件对象,可直接用PIL的Image.open()方法读取转换:

from PIL import Image

def process_image(request):
    # 从表单获取上传的文件
    uploaded_file = request.FILES['image']
    # 转换为PIL Image对象
    pil_image = Image.open(uploaded_file)
    
    # 示例:执行PIL图片处理操作
    resized_image = pil_image.resize((300, 300))
    # 保存处理后的图片
    resized_image.save('resized_image.png')

即使上传文件因体积过大自动转为TemporaryUploadedFile(超过Django的FILE_UPLOAD_MAX_MEMORY_SIZE阈值时触发),上述代码依然适用。

转换为OpenCV格式

需要先读取文件字节流,再用cv2.imdecode()解析,同时注意OpenCV默认使用BGR颜色通道,若需与其他工具(如PIL)统一,可转为RGB:

import cv2
import numpy as np

def process_image(request):
    uploaded_file = request.FILES['image']
    # 将文件内容转为字节数组
    file_bytes = np.asarray(bytearray(uploaded_file.read()), dtype=np.uint8)
    # 解码为OpenCV的Mat对象
    cv2_image = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
    
    # 可选:转换为RGB格式(适配PIL等工具的通道顺序)
    cv2_image_rgb = cv2.cvtColor(cv2_image, cv2.COLOR_BGR2RGB)
    
    # 示例:执行OpenCV处理操作
    gray_image = cv2.cvtColor(cv2_image, cv2.COLOR_BGR2GRAY)
    # 保存处理后的图片
    cv2.imwrite('gray_image.jpg', gray_image)

依赖说明

确保已安装所需库:

pip install pillow opencv-python

内容的提问来源于stack exchange,提问作者Mohammed Baashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:44:53