76 lines
2.8 KiB
TypeScript
76 lines
2.8 KiB
TypeScript
import { convertImage } from '../lib/image-converter';
|
||
import * as fs from 'fs-extra';
|
||
import * as path from 'path';
|
||
import dotenv from 'dotenv';
|
||
|
||
dotenv.config();
|
||
|
||
const inputDir = path.join(__dirname, '../../input');
|
||
const outputDir = path.join(__dirname, '../../generated/clearned');
|
||
|
||
const comfyUrl = process.env.SERVER1_COMFY_BASE_URL;
|
||
const comfyOutputDir = process.env.SERVER1_COMFY_OUTPUT_DIR;
|
||
|
||
if (!comfyUrl || !comfyOutputDir) {
|
||
console.error("ComfyUI URL or Output Directory is not set in environment variables.");
|
||
process.exit(1);
|
||
}
|
||
|
||
const comfyInputDir = comfyOutputDir.replace("output", "input");
|
||
|
||
async function processImages() {
|
||
await fs.ensureDir(outputDir);
|
||
|
||
const files = await fs.readdir(inputDir);
|
||
let index = 1;
|
||
|
||
for (const file of files) {
|
||
const sourceFilePath = path.join(inputDir, file);
|
||
const stats = await fs.stat(sourceFilePath);
|
||
|
||
if (stats.isFile()) {
|
||
console.log(`Processing ${file}...`);
|
||
|
||
const comfyInputPath = path.join(comfyInputDir, file);
|
||
|
||
try {
|
||
// 1. Copy file to ComfyUI input directory
|
||
await fs.copy(sourceFilePath, comfyInputPath);
|
||
console.log(`Copied ${file} to ComfyUI input.`);
|
||
|
||
const prompt = "请从图1中提取主要主体,把背景设置为浅灰色,并让主体正面朝向,制作成产品照片。";
|
||
|
||
// 2. Call convertImage with correct parameters
|
||
const generatedFilePath = await convertImage(prompt, file, comfyUrl!, comfyOutputDir!);
|
||
|
||
if (generatedFilePath && await fs.pathExists(generatedFilePath)) {
|
||
const outputFilename = `clearned_${index}.png`;
|
||
const finalOutputPath = path.join(outputDir, outputFilename);
|
||
|
||
// 3. Move the generated file to the final destination
|
||
await fs.move(generatedFilePath, finalOutputPath, { overwrite: true });
|
||
console.log(`Saved cleaned image to ${finalOutputPath}`);
|
||
index++;
|
||
|
||
// 4. Delete the original file from the script's input directory
|
||
await fs.unlink(sourceFilePath);
|
||
console.log(`Deleted original file: ${file}`);
|
||
}
|
||
|
||
// 5. Clean up the file from ComfyUI input directory
|
||
await fs.unlink(comfyInputPath);
|
||
console.log(`Cleaned up ${file} from ComfyUI input.`);
|
||
|
||
} catch (error) {
|
||
console.error(`Failed to process ${file}:`, error);
|
||
// If something fails, make sure to clean up the copied file if it exists
|
||
if (await fs.pathExists(comfyInputPath)) {
|
||
await fs.unlink(comfyInputPath);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
processImages().catch(console.error);
|