| 262 | }; |
| 263 | |
| 264 | export const serverImageToImage = async ( |
| 265 | biz: TaskBiz, |
| 266 | bizId: string, |
| 267 | imageToImage: ImageToImageParamType, |
| 268 | result: {}, |
| 269 | prompt: string, |
| 270 | image: string, |
| 271 | option?: ServerCallOptionType, |
| 272 | ): Promise<{ |
| 273 | type: string; |
| 274 | start: number; |
| 275 | end: number; |
| 276 | url: string; |
| 277 | }> => { |
| 278 | option = Object.assign( |
| 279 | { |
| 280 | cache: true, |
| 281 | }, |
| 282 | option, |
| 283 | ) as ServerCallOptionType; |
| 284 | if (option.cache) { |
| 285 | const cacheUrl = await $mapi.file.cacheGetPath({ |
| 286 | imageToImage, |
| 287 | prompt, |
| 288 | image, |
| 289 | }); |
| 290 | if (cacheUrl) { |
| 291 | return { |
| 292 | type: "success", |
| 293 | start: 0, |
| 294 | end: 0, |
| 295 | url: cacheUrl, |
| 296 | }; |
| 297 | } |
| 298 | } |
| 299 | const server = await serverStore.getByNameVersion( |
| 300 | imageToImage.serverName, |
| 301 | imageToImage.serverVersion, |
| 302 | ); |
| 303 | if (!server) { |
| 304 | throw "ImageToImage server not found: " + imageToImage.serverName; |
| 305 | } |
| 306 | const serverInfo = await serverStore.serverInfo(server); |
| 307 | const res = await serverStore.call(serverInfo, "imageToImage", { |
| 308 | id: serverStore.generateTaskId(biz, bizId), |
| 309 | result: result, |
| 310 | param: imageToImage.param, |
| 311 | prompt: prompt, |
| 312 | image: image, |
| 313 | }); |
| 314 | if (res.code) { |
| 315 | throw res.msg || "ImageToImage fail"; |
| 316 | } |
| 317 | const ret = { |
| 318 | type: res.data.type, |
| 319 | start: 0, |
| 320 | end: 0, |
| 321 | url: "", |