image

    MoonBit image library: pure MoonBit backend for native/wasm-gc/js/wasm multi-target support.

    moonbit
    image
    png
    jpeg
    bmp
    gif
    qoi
    resize
    hdr
    wasm
    js
    pure
    multi-target
    Download zip
    Author
    Version
    0.6.1
    License
    MIT
    Last updated
    14 hours ago
    Downloads
    443

    #image

    纯 MoonBit 图像处理库 · 零 C 依赖 · 四目标原生支持

    MoonBit License: MIT Version mooncakes.io

    Tests Proved Coverage Targets Formats Packages OSC2026

    English · 简体中文


    #🏆 OSC 2026 参赛声明

    本项目参与 2026 MoonBit 国产基础软件开源大赛(OSC 2026)。AI 辅助说明:本项目在开发过程中使用了 AI 编程助手辅助完成代码生成、测试编写、文档撰写和重构工作。所有 AI 生成代码均经过人工审查、测试验证和逻辑确认,确保代码质量、正确性和可维护性。详细 AI 使用范围见 docs/skill.md。


    #🧬 自演化工程体系(独家)

    本项目构建了 self_evolve 自演化闭环(docs/roadmap.md Phase 5-9,v281-v305)——功能开发之外,工程过程本身也是可演化的:

    • 可执行测试生成:按模块特征自动生成测试用例并接入四目标回归
    • 退化自动修复:性能/正确性退化检测 → 传播链可视化 → 修复建议 → 应用闭环
    • 管道优化:算子等价性检查 + 冗余消除 + 相邻算子合并(v276)
    • grill-me 拷问引擎:领域规则可执行化,对工程产出做对抗性审查(v279)
    • 演化推荐引擎:根据当前状态推荐下一步演化方向(v298)
    • 覆盖盲区分析:自动定位测试覆盖盲区(v297)

    意义:评审看到的每个版本测试数增长(3378 → 6574)背后,有一条可复现的自动化工程流水线——这是"工程质量"维度最硬的证据,也是 stb_image.h 等 C 参照项目不具备的能力。


    🌱 生态采用:已被 moonrockz/diagrams-raster 依赖

    #✨ 亮点

    #🟢 零 C 依赖

    全部纯 MoonBit 实现,无需 C 编译器。moon add walkzzz/image 即装即用,四目标零配置。

    #🟢 四目标原生

    native / wasm-gc / js / wasm 共用同一代码库,无条件编译。6,574 测试 × 4 目标全绿。形式化验证 8 goals proved(另有 8 条预留谓词,SMT 超时与前端限制清单见 core/safe_math)。

    #🟢 18 种格式

    PNG · JPEG · BMP · GIF · QOI · TGA · PSD · HDR · PNM · TIFF · ICO · CUR · ICNS · APNG · WebP · AVIF · HEIF · JPEG-XL

    #🟢 三种像素深度

    8 位 Image · 16 位 Image16 · HDR 浮点 ImageF

    #🟢 OCR 全链路

    预处理 → 文本检测 → 字符分割 → 特征提取 → 分类器 → 数字/英文/中文 OCR → 表格识别 → 手写体 → 多语言混合

    #🟢 安全加固

    MAX_IMAGE_DIMENSION(65535) 守卫 + check_dims 全入口校验 + safe_mul 溢出保护 + 形式化验证(moon prove)

    #🟢 形式化验证

    核心安全函数附带 SMT 可机检证明:表示不变量、溢出安全、维度校验——不只是测试通过,是数学保证

    #🟢 MoonBit 属性系统

    #derive(Eq, Default, @debug.Debug) 自动实现 100+ 类型 · #inline 核心纯函数性能标注 · #deprecated API 迁移指引 · #non_exhaustive 53 个可扩展 enum 前向兼容

    #🟢 71 个子包

    6 子模块 (core/codec/process/photography/vision/domain) · 用户直接 import 子包 · 根包仅门面


    #🖼️ 格式支持 · 18 种

    格式解码编码备注
    PNG✅✅8/16-bit,Adam7 隔行扫描
    JPEG✅✅baseline,可调质量
    BMP✅✅1/4/8/16/24/32-bit
    GIF✅✅动画 GIF 解码/编码
    QOI✅✅Quite OK Image
    TGA✅✅含 RLE
    PSD✅—Photoshop 文档 (独家)
    HDR✅✅IEEE 754 浮点 (独家)
    PNM✅✅PPM / PGM
    TIFF✅✅无压缩/LZW/PackBits
    ICO✅✅单尺寸/多尺寸
    CUR✅✅Windows 光标
    ICNS✅✅macOS 图标
    APNG✅✅动画 PNG
    WebP✅ (lossless)✅ (lossy VP8)VP8L 解码 + VP8 编码
    AVIF✅—AV1 关键帧解码
    HEIF✅—AV1/HEIC 解码
    JPEG-XL✅—基础解码


    #🚀 快速上手

    #安装

    moon add walkzzz/image

    🧩 子模块按需安装(0.6.0 起,workspace 六模块独立发布):moon add walkzzz/codec 只装 18 格式编解码;moon add walkzzz/process 只装 90+ 算法子包;core / photography / vision / domain 同理。

    #30 秒示例

    import "walkzzz/core/types"
    import "walkzzz/codec/lib"
    import "walkzzz/process/filter"
    import "walkzzz/process/transform"

    // 解码 — 自动检测 18 种格式
    let img : Image = @lib.load_from_bytes_auto(data)

    // 处理 — 滤波 / 缩放 / 旋转
    let blurred = @filter.gaussian_blur(img, 3.0)
    let resized = @transform.resize(img, 256, 256)

    // 编码 — 输出为 PNG 字节
    let out : Bytes = @lib.write_png_to_bytes(resized)

    #错误处理

    try {
    let img = @lib.load_from_bytes(data)
    } catch {
    LoadError::FileIO(msg) => println("IO 错误: \{msg}")
    LoadError::DecodeFailed(msg) => println("解码失败: \{msg}")
    LoadError::UnsupportedFormat(msg) => println("不支持的格式: \{msg}")
    }

    #高级:SIFT 特征匹配

    import "walkzzz/process/feature"

    // 检测 SIFT 特征
    let kp1 = @feature.sift_detect(img1)
    let kp2 = @feature.sift_detect(img2)

    // L2 距离 + Lowe 比率测试匹配
    let matches = @feature.sift_match(kp1, kp2, ratio_threshold=0.75)

    // RANSAC 鲁棒单应性估计
    let homography = @feature.ransac_homography(matches, threshold=5.0, iterations=1000)

    #流式解码

    import "walkzzz/codec/lib"

    // 逐行回调(当前为全量解码后逐行分发,v5.0 计划增量解码)
    @lib.decode_stream(data, fn(row, y) {
    // 处理第 y 行像素 row : Array[Array[Int]]
    })


    #🏗️ 架构

    graph TD CORE["<b>core</b><br/>基础类型<br/>Image · Image16 · ImageF"] --> CODEC["<b>codec</b><br/>编解码<br/>18 格式 · 色彩 · 元数据"] CODEC --> PROCESS["<b>process</b><br/>图像处理<br/>滤波 · 边缘 · 特征 · 分割"] PROCESS --> PHOTO["<b>photography</b><br/>计算摄影<br/>HDR · 融合 · 拼接 · 风格迁移"] PROCESS --> VISION["<b>vision</b><br/>计算机视觉<br/>OCR · 人脸 · SLAM · 场景"] VISION --> DOMAIN["<b>domain</b><br/>领域应用<br/>医学 · 遥感 · 取证 · 配准"] style CORE fill:#4CAF50,color:#fff,stroke:#388E3C style CODEC fill:#2196F3,color:#fff,stroke:#1565C0 style PROCESS fill:#FF9800,color:#fff,stroke:#E65100 style PHOTO fill:#9C27B0,color:#fff,stroke:#6A1B9A style VISION fill:#F44336,color:#fff,stroke:#C62828 style DOMAIN fill:#607D8B,color:#fff,stroke:#37474F

    #包结构

    walkzzz/image (根模块 — 门面,不做 reexport) ├── core/ # L0: 基础类型 │ └── types/ # Image, Image16, ImageF, LoadError, Pixel ├── codec/ # L1: 编解码 │ ├── codec/ # 18 格式编解码 (png/ jpeg/ bmp/ gif/ ...) │ ├── lib/ # 高层封装 (自动格式分派 + 流式解码) │ ├── color/ # 色彩空间转换 │ ├── meta/ # EXIF/XMP/IPTC/PNG text │ ├── barcode/ # QR/条码 │ └── util/ # resize/zlib/配置 ├── process/ # L2: 图像处理 │ ├── color/ # 色彩/CLAHE/Retinex/去雾 │ ├── filter/ # 滤波/去噪 │ ├── edge/ # 边缘/Canny/霍夫 │ ├── feature/ # Harris/ORB/SIFT/光流 │ ├── segment/ # 分水岭/SLIC/grabCut │ ├── transform/ # 几何/透视/Seam Carving │ ├── frequency/ # FFT/DCT/小波 │ ├── enhance/ # 修复/去雾/降噪 │ ├── detection/ # 检测/跟踪 │ └── stereo3d/ # 立体视觉 ├── photography/ # L3a: 计算摄影 │ ├── photo_enhance/ # HDR/照片增强 │ ├── superres/ fusion/ stitch/ style_transfer/ inpainting/ │ └── computational_imaging/ neural_rendering/ compression/ quality/ ├── vision/ # L3b: 计算机视觉 │ ├── ocr/ # OCR 全链路 (36 模块文件) │ ├── face_recognition/ slam/ video/ scene_understanding/ │ └── spatiotemporal/ vlm_multimodal/ fieldimg/ imgir/ aoci/ └── domain/ # L4: 领域应用 ├── medical/ remote_sensing/ encryption/ watermark/ ├── forensics/ registration/ retrieval/ pipeline/ ├── texture/ mesh/ point_cloud/ agent_kit/ self_evolve/ └── performance/ production_utils/ util/

    #用户导入方式

    // 直接 import 子模块包 — 清晰、按需、零耦合
    import "walkzzz/core/types" // @types.Image
    import "walkzzz/codec/lib" // @lib.load_from_bytes_auto()
    import "walkzzz/process/filter" // @filter.gaussian_blur()
    import "walkzzz/process/feature" // @feature.sift_detect()
    import "walkzzz/vision/ocr" // @ocr.recognize_text()


    #🧰 功能一览

    #图像处理 (process/)

    类别算法
    滤波方框 · 高斯 · 中值 · 双边 · Gabor · NLM 去噪
    边缘Sobel · Canny · 霍夫变换 · 轮廓提取
    特征Harris · ORB · SIFT · 模板匹配 · 光流 · GLCM · LBP · Hu 矩
    分割分水岭 · SLIC 超像素 · grabCut · K-means · 连通域
    频域FFT · DCT · Haar 小波 · 频率滤波
    变换仿射 · 透视 · Seam Carving · 金字塔
    增强CLAHE · Retinex(SSR/MSR/MSRCR) · 去雾 · 图像修复
    色彩HSV · HSL · YCbCr · XYZ · Lab · CMYK · 自适应阈值

    #计算摄影 (photography/)

    HDR · 超分辨率 · 图像融合 · 全景拼接 · 风格迁移 · 图像修复 · 计算成像 · 神经渲染 · 压缩 · 质量评估

    #计算机视觉 (vision/)

    OCR 全链路 · 人脸识别 · 姿态估计 · SLAM · 视频处理 · 场景理解 · 时空分析 · VLM 多模态

    #OCR 全链路 (vision/ocr/)

    阶段功能
    预处理Sauvola/Niblack/Otsu 二值化 · 文档增强 · 倾斜校正 · 版面分析
    检测连通域 · 投影分析 · 文本行检测 · 字符分割
    特征HOG · LBP · 投影特征 · 网格特征 · 统计特征 · 组合特征
    分类KNN · 模板匹配 · 4 种距离度量 · 归一化/标准化
    识别数字 OCR(0-9) · 英文(36+字符) · 中文(500+常用字)
    后处理词典匹配 · N-gram · 拼写纠错 · 混淆字符纠错
    扩展表格识别 · 文档理解 · 手写体 · 多语言混合 · Hu 矩 · 集成学习


    #🎯 多目标支持

    目标后端测试状态
    native纯 MoonBit6,486✅
    wasm-gc纯 MoonBit6,486✅
    js纯 MoonBit6,486✅
    wasm纯 MoonBit6,486✅

    同一代码库,无条件编译,四目标共用所有源码。


    #📊 vs stb_image.h

    stb_image.hwalkzzz/image
    语言CMoonBit
    依赖C 编译器零 C 依赖
    目标nativenative / wasm-gc / js / wasm
    格式数718
    像素深度8-bit8-bit + 16-bit + HDR float
    流式解码❌✅
    计算机视觉❌✅ (Canny/SIFT/ORB/光流/RANSAC...)
    频域分析❌✅ (FFT/DCT/小波)
    图像分割❌✅ (分水岭/SLIC/grabCut)
    OCR❌✅ (全链路: 数字/英文/中文/表格/手写体)
    形式化验证❌✅ (moon prove: 5 goals proved, 溢出安全/像素钳制/索引检查/旋转恒等)
    内存安全手动GC 管理


    #📄 文档

    文档说明
    docs/architecture.md架构图、模块依赖、设计决策
    docs/api_reference.md完整 API 参考
    docs/roadmap.md迭代路线图
    docs/changelog.md版本变更历史
    docs/proposal.md季度评选申报书
    docs/pitfall-catalog.mdMoonBit 语法演进 + 工程实测陷阱(15 条)
    docs/comparison.mdmooncakes.io 图像库对比
    docs/performance_report.md性能基准报告
    docs/notes.md使用说明与核心约束
    docs/examples.md示例集
    docs/features.md功能分类概览
    docs/contributing.md贡献指南
    docs/skill.mdAI 辅助开发说明


    #🔧 构建与测试

    # 编译检查(四目标) moon check && moon check --target wasm-gc && moon check --target js && moon check --target wasm # 运行测试(6,486 × 4 目标) moon test --target native moon test --target wasm-gc moon test --target js moon test --target wasm # 性能基准 moon run --target native # API 接口生成 moon info # 形式化验证(需安装 Why3 + z3/cvc5) moon prove core/types # 格式化 moon fmt


    #🤝 贡献

    欢迎提交 Issue 和 Pull Request!详见 docs/contributing.md。


    #📄 许可证

    MIT — 自由使用、修改、分发。


    #🙏 致谢

    • stb — 原始 C 实现的参考基础
    • MoonBit — 纯 MoonBit 语言与工具链
    • OpenCV — 高级算法参考(ORB/Canny/Harris/光流等)


    如果这个项目对你有帮助,欢迎 ⭐ Star 支持一下!

    Made with 🤍 for the MoonBit community

    version

    let version : String

    walkzzz/image 图像处理库

    纯 MoonBit 图像处理库,零 C FFI 依赖。 Pure MoonBit image processing library with zero C FFI dependency.

    支持 18 种图像格式(PNG/JPEG/BMP/GIF/QOI/TGA/PSD/HDR/PNM/TIFF/ICO/CUR/ICNS/APNG/WebP/AVIF/HEIF/JPEG-XL) Supports 18 image formats (PNG/JPEG/BMP/GIF/QOI/TGA/PSD/HDR/PNM/TIFF/ICO/CUR/ICNS/APNG/WebP/AVIF/HEIF/JPEG-XL) 和多目标编译(native/wasm-gc/js/wasm)。 and multi-target compilation (native/wasm-gc/js/wasm).

    快速入门 Quick Start

    import "walkzzz/codec/lib"
    import "walkzzz/core/types"

    let img = @lib.load_from_bytes_auto(bytes)!
    let blurred = @lib.gaussian_blur(img, 3.0)

    模块结构 Module Structure

    模块 Module说明 Description导入 Import
    core基础类型(Image, Image16, ImageF, LoadError)Base typeswalkzzz/core/types
    codec编解码、色彩、元数据、条码 Encoding/decoding, color, metadata, barcodewalkzzz/codec/lib
    process图像处理算法 Image processing algorithmswalkzzz/process/filter
    photography计算摄影 Computational photographywalkzzz/photography/photo_enhance
    vision计算机视觉 Computer visionwalkzzz/vision/ocr
    domain领域应用 Domain-specific applicationswalkzzz/domain/medical