From 774b5975736ba3f750784f256239db0bb292ca58 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Fri, 31 May 2024 13:31:02 +0900 Subject: [PATCH] refactor: Add PlaygroundImageGen component to PlaygroundMenu --- src/lib/Playground/PlaygroundImageGen.svelte | 49 ++++++++++++++++++++ src/lib/Playground/PlaygroundMenu.svelte | 9 ++++ src/ts/process/stableDiff.ts | 38 ++++++++++++--- 3 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 src/lib/Playground/PlaygroundImageGen.svelte diff --git a/src/lib/Playground/PlaygroundImageGen.svelte b/src/lib/Playground/PlaygroundImageGen.svelte new file mode 100644 index 00000000..53f71a19 --- /dev/null +++ b/src/lib/Playground/PlaygroundImageGen.svelte @@ -0,0 +1,49 @@ + + +

{language.imageGeneration}

+ +Prompt + + + +Neg. Prompt + + + +{#if img} + Generated + + Generated + +{/if} + \ No newline at end of file diff --git a/src/lib/Playground/PlaygroundMenu.svelte b/src/lib/Playground/PlaygroundMenu.svelte index c538af1d..cb3ac70e 100644 --- a/src/lib/Playground/PlaygroundMenu.svelte +++ b/src/lib/Playground/PlaygroundMenu.svelte @@ -10,6 +10,7 @@ import { characterFormatUpdate, createBlankChar } from "src/ts/characters"; import { get } from "svelte/store"; import { DataBase, setDatabase, type character } from "src/ts/storage/database"; + import PlaygroundImageGen from "./PlaygroundImageGen.svelte"; const playgroundChat = () => { let db = get(DataBase) @@ -69,6 +70,11 @@ }}>

Jinja

+ {:else} {#if $SizeStore.w < 1024} @@ -96,6 +102,9 @@ {#if $PlaygroundStore === 6} {/if} + {#if $PlaygroundStore === 7} + + {/if} {/if} \ No newline at end of file diff --git a/src/ts/process/stableDiff.ts b/src/ts/process/stableDiff.ts index 18125aef..f52902a7 100644 --- a/src/ts/process/stableDiff.ts +++ b/src/ts/process/stableDiff.ts @@ -54,7 +54,7 @@ export async function stableDiff(currentChar:character,prompt:string){ return await generateAIImage(genPrompt, currentChar, neg, '') } -export async function generateAIImage(genPrompt:string, currentChar:character, neg:string, returnSdData:string){ +export async function generateAIImage(genPrompt:string, currentChar:character, neg:string, returnSdData:string):Promise{ const db = get(DataBase) if(db.sdProvider === 'webui'){ @@ -91,8 +91,7 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n return '' } } - - if(da.ok){ + else if(da.ok){ let charemotions = get(CharEmotion) const img = `data:image/png;base64,${da.data.images[0]}` console.log(img) @@ -300,7 +299,7 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n } } - if(da.ok){ + else if(da.ok){ let charemotions = get(CharEmotion) const img = await processZip(da.data); const emos:[string, string,number][] = [[img, img, Date.now()]] @@ -321,7 +320,7 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n } } if(db.sdProvider === 'dalle'){ - const data = await globalFetch("https://api.openai.com/v1/images/generations", { + const da = await globalFetch("https://api.openai.com/v1/images/generations", { body: { "prompt": genPrompt, "model": "dall-e-3", @@ -333,7 +332,34 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n } }) - return data?.data?.url ?? "" + console.log(da) + + if(returnSdData === 'inlay'){ + let res = da?.data?.data?.[0]?.b64_json + if(!res){ + alertError(JSON.stringify(da.data)) + return '' + } + return `data:image/png;base64,${res}` + } + + else if(da.ok){ + let charemotions = get(CharEmotion) + let img = da?.data?.data?.[0]?.b64_json + if(!img){ + alertError(JSON.stringify(da.data)) + return false + } + img = `data:image/png;base64,${img}` + const emos:[string, string,number][] = [[img, img, Date.now()]] + charemotions[currentChar.chaId] = emos + CharEmotion.set(charemotions) + } + else{ + alertError(Buffer.from(da.data).toString()) + return false + } + return returnSdData } return '' } \ No newline at end of file