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 |
|