UNPKG

hudada-cli

Version:

专为程序员准备的本地文档搜索,快捷开发工具

3 lines (2 loc) 1.66 kB
#!/usr/bin/env node import o from"fs";import e,{dirname as n}from"path";import r from"chalk";import{removeBackground as t}from"@imgly/background-removal-node";import{fileURLToPath as a}from"url";const c=n(a(import.meta.url)),l=[".jpg",".jpeg",".png",".webp"];async function i(){try{let n=c;const a=process.cwd();console.log(r.cyan("开始处理图片..."));const i={debug:!1,publicPath:`file://${e.resolve(n,"../../node_modules/@imgly/background-removal-node/dist/").split(e.sep).join("/")}/`};console.log(r.gray(`WASM 路径: ${i.publicPath}`));const s=await async function(n){const r=[];async function t(n){const a=await o.readdirSync(n,{withFileTypes:!0});for(const o of a){const a=e.join(n,o.name);"node_modules"===o.name||o.name.endsWith("_koutu.png")||(o.isDirectory()?await t(a):o.isFile()&&l.includes(e.extname(o.name).toLowerCase())&&r.push(a))}}return await t(n),r}(a);if(0===s.length)return void console.log(r.yellow("当前目录下没有找到图片文件"));console.log(r.cyan(`找到 ${s.length} 个图片文件`));for(let n of s){const c=e.relative(a,n),l=e.parse(n).name;let s=e.join(e.dirname(n),"koutu");o.mkdirSync(s,{recursive:!0});const m=e.join(s,`${l}.png`);try{console.log(r.cyan(`处理中: ${c}`));let a="file://"+n;const l=await t(a,i),s=await l.arrayBuffer(),g=Buffer.from(s);await o.writeFileSync(m,g),console.log(r.green(`✓ 完成: ${e.basename(m)}`))}catch(o){console.error(r.red(`× 处理失败: ${c}`),o),console.error(r.gray("错误详情:"),o)}}console.log(r.green("\n所有图片处理完成!"))}catch(o){console.error(r.red("处理失败:"),o),console.error(r.gray("错误详情:"),o)}}export{i as processImages};