feat: add ComfyUI integration for image generation and management
- Implemented ComfyGenerateRequest type and associated functions for generating images using various architectures and modes. - Added functions for listing generation options and handling image uploads. - Created workflows for different generation modes including SDXL, Z-Image, Z-Image Turbo, and Anima. - Introduced GenerationJobStatus component to display the status of ongoing generation jobs. - Developed MaskControls for managing mask operations and displaying mask analysis. - Created palette items for tool selection, layer management, and generation settings.
This commit is contained in:
32
platform/browser/imageFiles.ts
Normal file
32
platform/browser/imageFiles.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
export type BrowserImageFile = {
|
||||
name: string;
|
||||
mimeType: string;
|
||||
source: string;
|
||||
intrinsicSize: { w: number; h: number };
|
||||
release(): void;
|
||||
};
|
||||
|
||||
export async function decodeBrowserImageFile(file: File): Promise<BrowserImageFile | undefined> {
|
||||
if (!file.type.startsWith("image/")) return undefined;
|
||||
const source = await fileToDataUrl(file);
|
||||
const intrinsicSize = await loadImageSize(source);
|
||||
return { name: file.name, mimeType: file.type, source, intrinsicSize, release: () => undefined };
|
||||
}
|
||||
|
||||
function fileToDataUrl(file: File): Promise<string> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.onload = () => typeof reader.result === "string" ? resolve(reader.result) : reject(new Error("Failed to read image file"));
|
||||
reader.onerror = () => reject(reader.error ?? new Error("Failed to read image file"));
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
}
|
||||
|
||||
function loadImageSize(source: string): Promise<{ w: number; h: number }> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const image = new Image();
|
||||
image.onload = () => resolve({ w: image.naturalWidth, h: image.naturalHeight });
|
||||
image.onerror = () => reject(new Error("Failed to load image"));
|
||||
image.src = source;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user