import os import uuid from datetime import datetime from sqlmodel import Session from entity.device_frame import DeviceFrame import cv2 class DeviceFrameService: def __init__(self, db: Session): self.db = db def add_frame(self, device_id, frame_data) -> DeviceFrame: def save_frame_file(): # 生成当前年月日作为目录路径 current_date = datetime.now().strftime('%Y/%m/%d') # 生成随机 UUID 作为文件名 file_name = str(uuid.uuid4()) + ".png" # 创建保存图片的完整路径 save_path = os.path.join('./storage/frames', current_date, file_name) # 创建目录(如果不存在) os.makedirs(os.path.dirname(save_path), exist_ok=True) # 保存图片 cv2.imwrite(save_path, frame_data) return save_path # 保存图片文件 file_path = save_frame_file() device_frame = DeviceFrame(device_id=device_id, frame_path=file_path) self.db.add(device_frame) self.db.commit() self.db.refresh(device_frame) return device_frame