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

Python中无需本地存储即可查看SQLite BLOB字段存储图像的实现方法

无需生成本地文件的SQLite图像BLOB读写方案

写入阶段:直接把内存中的图像转二进制写入

不管你的图像是来自内存生成、相机实时捕获、网络下载,都不需要先存到本地磁盘,直接转成二进制流就能写入SQLite的BLOB字段:

  • PIL Image对象写入示例:
import sqlite3
from io import BytesIO
from PIL import Image

# 这里是你内存中的任意PIL图像对象,不需要提前存本地
img = Image.new('RGB', (100, 100), color='red')

# 直接在内存中转二进制
byte_buffer = BytesIO()
img.save(byte_buffer, format='PNG')
img_blob = byte_buffer.getvalue()

# 写入数据库
conn = sqlite3.connect('project.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS image_store (id INTEGER PRIMARY KEY AUTOINCREMENT, img_blob BLOB)")
cursor.execute("INSERT INTO image_store (img_blob) VALUES (?)", (img_blob,))
conn.commit()
conn.close()
  • OpenCV Mat对象写入示例:
import sqlite3
import cv2
import numpy as np

# 这里是你内存中的任意OpenCV图像对象,不需要提前存本地
img = np.zeros((100,100,3), np.uint8)
cv2.rectangle(img, (20,20), (80,80), (0,255,0), 2)

# 直接在内存中编码为二进制
_, encode_img = cv2.imencode('.png', img)
img_blob = encode_img.tobytes()

# 后续写入数据库逻辑和上面一致

读取阶段:直接加载二进制数据预览,不生成本地文件

从数据库读取出BLOB二进制数据后,直接在内存中转为图像对象即可预览,完全不需要落地到磁盘:

  • 用PIL直接查看示例:
import sqlite3
from io import BytesIO
from PIL import Image

conn = sqlite3.connect('project.db')
cursor = conn.cursor()
cursor.execute("SELECT img_blob FROM image_store WHERE id = 1")
img_blob = cursor.fetchone()[0]
conn.close()

# 直接从二进制加载图像并展示,无本地文件生成
img = Image.open(BytesIO(img_blob))
img.show()
  • 用OpenCV直接查看示例:
import sqlite3
import cv2
import numpy as np

conn = sqlite3.connect('project.db')
cursor = conn.cursor()
cursor.execute("SELECT img_blob FROM image_store WHERE id = 1")
img_blob = cursor.fetchone()[0]
conn.close()

# 直接从二进制加载为OpenCV图像并展示,无本地文件生成
img_arr = np.frombuffer(img_blob, np.uint8)
img = cv2.imdecode(img_arr, cv2.IMREAD_COLOR)
cv2.imshow("DB Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

整个流程所有数据都在内存中流转,不会产生任何临时文件,也不存在数据冗余存储的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:45:02