MCPcopy
hub / github.com/HisMax/RedInk / generate_images

Method generate_images

backend/services/image.py:247–563  ·  view source on GitHub ↗

生成图片(生成器,支持 SSE 流式返回) 优化版本:先生成封面,然后并发生成其他页面 Args: pages: 页面列表 task_id: 任务 ID(可选) full_outline: 完整的大纲文本(用于保持风格一致) user_images: 用户上传的参考图片列表(可选) user_topic: 用户原始输入(用于保持意图一致) Yields: 进度事件字典

(
        self,
        pages: list,
        task_id: str = None,
        full_outline: str = "",
        user_images: Optional[List[bytes]] = None,
        user_topic: str = "",
        record_id: Optional[str] = None,
        force: bool = False
    )

Source from the content-addressed store, hash-verified

245 return (index, False, None, error_msg)
246
247 def generate_images(
248 self,
249 pages: list,
250 task_id: str = None,
251 full_outline: str = "",
252 user_images: Optional[List[bytes]] = None,
253 user_topic: str = "",
254 record_id: Optional[str] = None,
255 force: bool = False
256 ) -> Generator[Dict[str, Any], None, None]:
257 """
258 生成图片(生成器,支持 SSE 流式返回)
259 优化版本:先生成封面,然后并发生成其他页面
260
261 Args:
262 pages: 页面列表
263 task_id: 任务 ID(可选)
264 full_outline: 完整的大纲文本(用于保持风格一致)
265 user_images: 用户上传的参考图片列表(可选)
266 user_topic: 用户原始输入(用于保持意图一致)
267
268 Yields:
269 进度事件字典
270 """
271 if record_id and not force:
272 cached_events = self.get_cached_generation_events(record_id, pages)
273 if cached_events:
274 for event in cached_events:
275 yield event
276 return
277
278 if task_id is None and record_id:
279 record = self.history_service.get_record(record_id, sync_images=True)
280 task_id = record.get("images", {}).get("task_id") if record else None
281
282 if task_id is None:
283 task_id = f"task_{uuid.uuid4().hex[:8]}"
284
285 logger.info(f"开始图片生成任务: task_id={task_id}, pages={len(pages)}")
286
287 # 创建任务专属目录
288 self.current_task_dir = os.path.join(self.history_root_dir, task_id)
289 os.makedirs(self.current_task_dir, exist_ok=True)
290 logger.debug(f"任务目录: {self.current_task_dir}")
291
292 total = len(pages)
293 generated_images = [""] * total
294 failed_pages = []
295 cover_image_data = None
296
297 # 压缩用户上传的参考图到200KB以内(减少内存和传输开销)
298 compressed_user_images = None
299 if user_images:
300 compressed_user_images = [compress_image(img, max_size_kb=200) for img in user_images]
301
302 # 初始化任务状态
303 self._task_states[task_id] = {
304 "pages": pages,

Callers 1

generateFunction · 0.80

Calls 7

_remember_generatedMethod · 0.95
_count_generatedMethod · 0.95
compress_imageFunction · 0.90
get_recordMethod · 0.80
getMethod · 0.80

Tested by

no test coverage detected