EN

unfake.js

unfake.js 是一个 JavaScript 库,用于弥合 AI 生成图像与干净、可用素材之间的差距。

核验日期

核心信息

以下信息由程序从官方接口读取,不经模型改写。

许可证
MIT
语言
JavaScript
维护方
jenissimo
核验日期

它是什么

unfake.js 是一个 JavaScript 库,用于弥合 AI 生成图像与干净、可用素材之间的差距。它提供两种主要运行模式:Pixel Art Processor 和 Image Vectorizer。该库捆绑了一个基于浏览器的工具,用于交互式使用。图像处理核心位于 unfake-core 中,它是一个无头 Rust crate,为浏览器工具编译为 WebAssembly,为命令行工具编译为原生二进制。

主要能力

  1. Pixel Art Processor 模式专门用于清理像素画,尤其是 AI 生成、常带有像素大小不一致、颜色渗色和其他伪影的作品。

  2. 在 Pixel Art Processor 中,智能比例检测使用 runs-based 或 edge-aware 算法检测放大像素画的真实像素大小,包括分数网格,也可以接受手动比例系数。

  3. Image Vectorizer 模式把 PNG、JPG 等栅格图像转换为 SVG 文件,并且是 imagetracer.js 的封装,其前后处理能力由 unfake-core WASM 滤镜提供。

  4. 在 Image Vectorizer 中,降噪预处理在矢量化前应用 Bilateral 或 Median 模糊来减少噪点,颜色量化在描摹前简化调色板,背景处理为透明图像在处理期间添加临时背景并在最终 SVG 中移除,精细描摹开放 imagetracer.js 选项,调色板提取则从生成的 SVG 中提取最终调色板。

怎么上手

  1. 在线演示基于浏览器,无需安装。

  2. ComfyUI 集成使 unfake.js 可以直接用在 ComfyUI 工作流中。

  3. 现代浏览器不允许从本地文件进行 ES 模块导入。

  4. 在本地运行浏览器工具时,必须通过本地 http(s) 服务器运行它。

  5. 该库以 ES 模块的形式编写。

  6. 可以导入并使用该库的核心函数。

摘自 README · sh
  python -m http.server 8080
  # or
  python3 -m http.server 8080
摘自 README · sh
  npx http-server -p 8080
摘自 README · javascript
import unfake from './lib/index.js';

const fileInput = document.getElementById('my-file-input');
const file = fileInput.files[0];

const options = {
    file: file,
    maxColors: 32,
    detectMethod: 'auto', // 'auto', 'runs', 'edge'
    downscaleMethod: 'dominant',
    snapGrid: true,
    cleanup: { 
        morph: true, 
        jaggy: true 
    }
};

try {
    const { png, imageData, palette, manifest } = await unfake.processImage(options);
    
    // `png` is a Uint8Array of the final PNG file
    const blob = new Blob([png], { type: 'image/png' });
    const url = URL.createObjectURL(blob);
    
    // Now you can use the URL for an <img> tag or download link
    document.getElementById('result-image').src = url;

} catch (error) {
    console.error("Pixel processing failed:", error);
}
摘自 README · javascript
import unfake from './lib/index.js';

const fileInput = document.getElementById('my-file-input');
const file = fileInput.files[0];

const options = {
    file: file,
    preProcess: {
        enabled: true,
        filter: 'bilateral',
        value: 15
    },
    quantize: {
        enabled: true,
        maxColors: 'auto' // or a number like 16
    },
    // imagetracer.js options
    ltres: 1,
    qtres: 1,
};

try {
    const { svg, palette, manifest } = await unfake.vectorizeImage(options);
    
    // `svg` is a string containing the SVG markup
    document.getElementById('result-container').innerHTML = svg;

} catch (error) {
    console.error("Vectorization failed:", error);
}

适合谁

项目包含一个基于浏览器的工具,并为其提供界面。浏览器工具可以用 Tweakpane 面板实时调整处理参数。浏览器工具可以通过拖到窗口上、选择文件或从剪贴板粘贴来上传图像。

浏览器工具的前后对比视图并排显示原图和处理后的图像。浏览器工具内置放大镜,可检查原图和结果图的像素级细节。浏览器工具的调色板编辑器显示结果的调色板,并可交互式替换颜色。

浏览器工具可以下载最终素材,像素画为 PNG,矢量为 SVG,也可以复制到剪贴板。在网格对齐中,分数网格被就地逐单元采样,当手绘单元围绕比例抖动时,弹性网格会使单元边界贴合所绘边缘。浏览器工具中的 JavaScript 层是一个薄接口,包含文件 I/O、画布、Tweakpane 界面以及对 WASM 核心的调用。

unfake-core 不使用 OpenCV。unfake-core 使用 imagequant 进行量化,使用 png crate 进行编码。ImageTracer.js 是矢量化(栅格到 SVG)过程的引擎。

项目方称,一个带有 Rust 加速量化的 Python 实现相比 JS 版本提速 10-20%。该项目采用 MIT 许可证。

来源

本页内容整理自以下官方来源,点击可核对原文。

核验日期 ·

本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。