From ff68594f03d8ad3d07fc1c4129d7eeaf4b867869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Thu, 3 Aug 2023 23:24:10 +0200 Subject: [PATCH] Pushibus mit ImageMaster3000 --- .../KIKunstKirstenKlöckner.csproj | 5 ++ KIKunstKirstenKlöckner/Pages/AiArt.razor | 62 +++++++++++++------ KIKunstKirstenKlöckner/Pages/_Host.cshtml | 20 ++++++ .../wwwroot/scripts/ImageMaster3000.js | 32 ++++++++++ 4 files changed, 99 insertions(+), 20 deletions(-) create mode 100644 KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js diff --git a/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj b/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj index 5fb201f..77beb84 100644 --- a/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj +++ b/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj @@ -9,9 +9,14 @@ + + + + + diff --git a/KIKunstKirstenKlöckner/Pages/AiArt.razor b/KIKunstKirstenKlöckner/Pages/AiArt.razor index 1395d79..b339b6f 100644 --- a/KIKunstKirstenKlöckner/Pages/AiArt.razor +++ b/KIKunstKirstenKlöckner/Pages/AiArt.razor @@ -8,6 +8,8 @@ @inject TooltipService TooltipService @inject DialogService DialogService +@inject IJSRuntime JSRuntime; + AiArt

Wunschbilder von KI nur für dich

@@ -28,6 +30,7 @@ Nenne uns deinen Wunsch: + @@ -45,16 +48,35 @@ - Generate - + Generate + + + + + + @_imagePrompt + + + + + + Die Idee, die gemalt wird: + @_imageDescription + + + @code { private bool _progressVisible = false; + private bool _buttonVisible = true; public string BusyMessage { get; set; } = "Initial Message"; @@ -108,6 +130,8 @@ private string _basePrompt; + private string _imageUrl; + //protected override async Task OnInitializedAsync() //{ // _basePrompt = await File.ReadAllTextAsync($"{Directory.GetCurrentDirectory()}{@"\wwwroot\prompt.txt"}"); @@ -146,19 +170,24 @@ BusyMessage = newMessage; await InvokeAsync(StateHasChanged); } + + public async Task GenerateImage() + { + //await JSRuntime.InvokeVoidAsync("DoSexyStuffBridge", _imagePrompt); + _imageUrl = await JSRuntime.InvokeAsync("DoSexyStuffBridge", _imagePrompt); + } private async Task DoStuff() { // Der Dialog blokiert so lange, wie der er offen ist, deshalb dürfen wir hier nicht warten, da wir sonst nie mit der Arbeit anfangen... //Task busyDialog = ShowBusyDialog(); _progressVisible = true; + _buttonVisible = false; await UpdateBusyMessage("Kirstens Assistent zerbricht sich über deine Idee den Kopf..."); _basePrompt = await File.ReadAllTextAsync($"{Directory.GetCurrentDirectory()}{@"\wwwroot\prompt.txt"}"); - - //await Task.Delay(1000); - + OpenAIAPI api = new OpenAIAPI("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"); ChatRequest chatRequest = new ChatRequest @@ -185,29 +214,22 @@ _imageDescription = response.Substring(lineBreak); await UpdateBusyMessage("Kirstens Assistent hat eine Idee! Er wird sie nun malen..."); + + Task makeImagesTask = GenerateImage(); - // TODO: Hier bilder generieren - //Task makeImagesTask = Task.Delay(10000); - - CancellationTokenSource cancelFunnyMessages = new CancellationTokenSource(); - - Task funnyMessagesTask = FunnyMessageSwitcher_ImageGen(cancelFunnyMessages.Token); - + //CancellationTokenSource cancelFunnyMessages = new CancellationTokenSource(); + //Task funnyMessagesTask = FunnyMessageSwitcher_ImageGen(cancelFunnyMessages.Token); // Wichtig, erst Bilder awaiten, dann die lustingen Sprüche, sonst warten wir ewig... - //await makeImagesTask; + await makeImagesTask; - cancelFunnyMessages.Cancel(); + //cancelFunnyMessages.Cancel(); - await funnyMessagesTask; - - //DialogService.Close();// - - // Wir warten auf den Task des Dialogs nach dem Schließen, weil das funktioniert. - //await busyDialog; + //await funnyMessagesTask; _progressVisible = false; + _buttonVisible = true; await InvokeAsync(StateHasChanged); } } diff --git a/KIKunstKirstenKlöckner/Pages/_Host.cshtml b/KIKunstKirstenKlöckner/Pages/_Host.cshtml index edfc3d1..5d2e5de 100644 --- a/KIKunstKirstenKlöckner/Pages/_Host.cshtml +++ b/KIKunstKirstenKlöckner/Pages/_Host.cshtml @@ -34,5 +34,25 @@ + + + + + diff --git a/KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js b/KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js new file mode 100644 index 0000000..7dbf826 --- /dev/null +++ b/KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js @@ -0,0 +1,32 @@ +import { HfInference } from 'https://cdn.jsdelivr.net/npm/@huggingface/inference@2.6.1/+esm'; +import { createRepo, commit, deleteRepo, listFiles } from "https://cdn.jsdelivr.net/npm/@huggingface/hub@0.8.4/+esm"; + +async function DoSexyStuff(prompt) +{ + const HF_ACCESS_TOKEN = "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"; + + const inference = new HfInference(HF_ACCESS_TOKEN); + + const blob = await inference.textToImage({ + //model: 'stabilityai/stable-diffusion-2', + model: 'Nacken/ki-kunst-kirsten-kloeckner-colab', + //inputs: 'award winning high resolution photo of a giant tortoise/((ladybird)) hybrid, [trending on artstation]', + inputs: prompt, + parameters: { + negative_prompt: 'blurry', + } + }) + + const imageUrl = window.URL.createObjectURL(blob); + + return imageUrl; + + //window.open(imageUrl, '_blank'); +} + +// Exportiere die Funktion in den globalen Kontext +window.DoSexyStuff = DoSexyStuff; + +function showAlert(message) { + alert(message); +} \ No newline at end of file