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

Method _generate_via_images_api

backend/generators/image_api.py:91–144  ·  view source on GitHub ↗

通过 /v1/images/generations 端点生成图片

(
        self,
        prompt: str,
        aspect_ratio: str,
        model: str,
        reference_image: Optional[bytes] = None,
        reference_images: Optional[List[bytes]] = None
    )

Source from the content-addressed store, hash-verified

89 return self._generate_via_images_api(prompt, aspect_ratio, model, reference_image, reference_images)
90
91 def _generate_via_images_api(
92 self,
93 prompt: str,
94 aspect_ratio: str,
95 model: str,
96 reference_image: Optional[bytes] = None,
97 reference_images: Optional[List[bytes]] = None
98 ) -> bytes:
99 """通过 /v1/images/generations 端点生成图片"""
100 headers = {
101 "Authorization": f"Bearer {self.api_key}",
102 "Content-Type": "application/json"
103 }
104
105 payload = {
106 "model": model,
107 "prompt": prompt,
108 "aspect_ratio": aspect_ratio,
109 "image_size": self.image_size
110 }
111
112 # 收集所有参考图片
113 all_reference_images = []
114 if reference_images and len(reference_images) > 0:
115 all_reference_images.extend(reference_images)
116 if reference_image and reference_image not in all_reference_images:
117 all_reference_images.append(reference_image)
118
119 # 如果有参考图片,添加到 image 数组
120 if all_reference_images:
121 logger.debug(f" 添加 {len(all_reference_images)} 张参考图片")
122 image_uris = []
123 for idx, img_data in enumerate(all_reference_images):
124 compressed_img = compress_image(img_data, max_size_kb=200)
125 logger.debug(f" 参考图 {idx}: {len(img_data)} -> {len(compressed_img)} bytes")
126 base64_image = base64.b64encode(compressed_img).decode('utf-8')
127 data_uri = f"data:image/png;base64,{base64_image}"
128 image_uris.append(data_uri)
129
130 payload["image"] = image_uris
131
132 ref_count = len(all_reference_images)
133 enhanced_prompt = f"""参考提供的 {ref_count} 张图片的风格(色彩、光影、构图、氛围),生成一张新图片。
134
135新图片内容:{prompt}
136
137要求:
1381. 保持相似的色调和氛围
1392. 使用相似的光影处理
1403. 保持一致的画面质感
1414. 如果参考图中有人物或产品,可以适当融入"""
142 payload["prompt"] = enhanced_prompt
143
144 return self.client.generate_via_images(payload)
145
146 def _generate_via_chat_api(
147 self,

Callers 1

generate_imageMethod · 0.95

Calls 2

compress_imageFunction · 0.85
generate_via_imagesMethod · 0.80

Tested by

no test coverage detected