Spaces:
Runtime error
Runtime error
adapta to new backedn
Browse files
frontend/src/lib/App.svelte
CHANGED
|
@@ -41,6 +41,26 @@
|
|
| 41 |
$isPrompting = false;
|
| 42 |
console.log('prompt', prompt, imgURLs);
|
| 43 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
function getImageMask(cursor: { x: number; y: number }) {
|
| 45 |
const tempCanvas = document.createElement('canvas');
|
| 46 |
const canvasCrop = document.createElement('canvas');
|
|
@@ -116,12 +136,17 @@
|
|
| 116 |
$isLoading = true;
|
| 117 |
const sessionHash = crypto.randomUUID();
|
| 118 |
const payload = {
|
| 119 |
-
fn_index:
|
| 120 |
data: [
|
| 121 |
-
|
| 122 |
-
// { mask: null, image: null },
|
| 123 |
_prompt,
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
],
|
| 126 |
session_hash: sessionHash
|
| 127 |
};
|
|
@@ -160,10 +185,10 @@
|
|
| 160 |
break;
|
| 161 |
case 'process_completed':
|
| 162 |
try {
|
| 163 |
-
const imgBase64 = data.output.data[0] as string;
|
| 164 |
-
const isNSWF = data.output.data[1] as boolean;
|
| 165 |
|
| 166 |
-
const imgBlob = await base64ToBlob(imgBase64);
|
| 167 |
const imgURL = await uploadImage(imgBlob, _prompt);
|
| 168 |
|
| 169 |
$imagesList.push({
|
|
|
|
| 41 |
$isPrompting = false;
|
| 42 |
console.log('prompt', prompt, imgURLs);
|
| 43 |
}
|
| 44 |
+
function getImageCrop(cursor: { x: number; y: number }) {
|
| 45 |
+
const canvasCrop = document.createElement('canvas');
|
| 46 |
+
|
| 47 |
+
canvasCrop.width = 512;
|
| 48 |
+
canvasCrop.height = 512;
|
| 49 |
+
|
| 50 |
+
const ctxCrop = canvasCrop.getContext('2d') as CanvasRenderingContext2D;
|
| 51 |
+
|
| 52 |
+
// crop image from point canvas
|
| 53 |
+
ctxCrop.save();
|
| 54 |
+
ctxCrop.clearRect(0, 0, 512, 512);
|
| 55 |
+
ctxCrop.globalCompositeOperation = 'source-over';
|
| 56 |
+
ctxCrop.drawImage(canvasEl, cursor.x, cursor.y, 512, 512, 0, 0, 512, 512);
|
| 57 |
+
ctxCrop.restore();
|
| 58 |
+
|
| 59 |
+
const base64Crop = canvasCrop.toDataURL('image/png');
|
| 60 |
+
|
| 61 |
+
return base64Crop.replaceAll('data:image/png;base64,', '');
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
function getImageMask(cursor: { x: number; y: number }) {
|
| 65 |
const tempCanvas = document.createElement('canvas');
|
| 66 |
const canvasCrop = document.createElement('canvas');
|
|
|
|
| 136 |
$isLoading = true;
|
| 137 |
const sessionHash = crypto.randomUUID();
|
| 138 |
const payload = {
|
| 139 |
+
fn_index: 4,
|
| 140 |
data: [
|
| 141 |
+
getImageCrop($clickedPosition),
|
|
|
|
| 142 |
_prompt,
|
| 143 |
+
0.75,
|
| 144 |
+
7.5,
|
| 145 |
+
30,
|
| 146 |
+
true,
|
| 147 |
+
'patchmatch',
|
| 148 |
+
true,
|
| 149 |
+
null
|
| 150 |
],
|
| 151 |
session_hash: sessionHash
|
| 152 |
};
|
|
|
|
| 185 |
break;
|
| 186 |
case 'process_completed':
|
| 187 |
try {
|
| 188 |
+
const imgBase64 = data.output.data[0].value as string;
|
| 189 |
+
// const isNSWF = data.output.data[1] as boolean;
|
| 190 |
|
| 191 |
+
const imgBlob = await base64ToBlob('data:image/png;base64,' + imgBase64);
|
| 192 |
const imgURL = await uploadImage(imgBlob, _prompt);
|
| 193 |
|
| 194 |
$imagesList.push({
|
frontend/src/lib/Canvas.svelte
CHANGED
|
@@ -59,7 +59,8 @@
|
|
| 59 |
});
|
| 60 |
|
| 61 |
function renderImages(imagesList) {
|
| 62 |
-
const images = [...imagesList.toImmutable()].sort((a, b) => a.date
|
|
|
|
| 63 |
images.forEach(({ imgURL, position }) => {
|
| 64 |
const img = new Image();
|
| 65 |
img.crossOrigin = 'anonymous';
|
|
|
|
| 59 |
});
|
| 60 |
|
| 61 |
function renderImages(imagesList) {
|
| 62 |
+
const images = [...imagesList.toImmutable()].sort((a, b) => a.date < b.date);
|
| 63 |
+
console.log('images', images);
|
| 64 |
images.forEach(({ imgURL, position }) => {
|
| 65 |
const img = new Image();
|
| 66 |
img.crossOrigin = 'anonymous';
|
frontend/src/routes/+page.svelte
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<script lang="ts">
|
| 2 |
import { onMount } from 'svelte';
|
| 3 |
import { isLoading, loadingState, createPresenceStore, createStorageStore } from '$lib/store';
|
| 4 |
-
import {
|
| 5 |
import type { Client, Room } from '@liveblocks/client';
|
| 6 |
import { createClient, LiveList } from '@liveblocks/client';
|
| 7 |
|
|
|
|
| 1 |
<script lang="ts">
|
| 2 |
import { onMount } from 'svelte';
|
| 3 |
import { isLoading, loadingState, createPresenceStore, createStorageStore } from '$lib/store';
|
| 4 |
+
import { PUBLIC_DEV_MODE } from '$env/static/public';
|
| 5 |
import type { Client, Room } from '@liveblocks/client';
|
| 6 |
import { createClient, LiveList } from '@liveblocks/client';
|
| 7 |
|