科学工具
科学工具让世界更美好
让世界更美好

可在浏览器中离线于行的图片优化工具 MAZANOKE 操作入门可在浏览器中离线于行的图片优化工具 MAZANOKE 操作入门

MAZANOKE 是一个自托管的本地图像优化工具,完全在浏览器中运行,支持离线使用,所有图像处理都在设备本地完成,不会将文件上传到服务器,同时会移除 EXIF 数据(如位置、日期等),避免追踪。MAZANOKE 采用 GNU General Public License v3.0 开源协议,适合个人和家庭使用,可以作为在线图片工具的替代方案。

MAZANOKE支持拖放或粘贴 JPG、PNG、WebP、HEIC、AVIF、TIFF、SVG、ICO 等格式图片,自定义优化参数能调整图像质量(数值越高细节保留越多,文件体积越小)、限制文件大小、设置最大宽高,格式转换支持在 JPG、PNG、WebP、ICO 之间转换,支持从 HEIC、AVIF、TIFF、GIF、SVG 等格式输入。

MAZANOKE 安装方式

1、Docker 部署

使用 Docker Compose 配置:

services:
  mazanoke:
    container_name: mazanoke
    image: ghcr.io/civilblur/mazanoke:latest
    ports:
      - "3474:80"
    # 可选:配置基本认证
    environment:
      - USERNAME=YourUsername
      - PASSWORD=YourPassword

部署后访问 http://localhost:3474,如果设置 USERNAMEPASSWORD 环境变量,访问时需输入用户名和密码。

2、本地部署

下载最新源码版本,直接打开 index.html 文件即可在浏览器中启动应用。

3、安装为 Web 应用(PWA)

• 访问 https://MAZANOKE.com,点击右上角“Install”按钮(浏览器支持 PWA 时显示)。

• 若按钮未显示,可手动安装:

Chrome(桌面):点击三点菜单 → “Cast, save, and share” → “Install page as app” → 点击“Install”。

Safari(桌面):打开分享面板 → 点击“Add to Dock” → 确认“Add”。

移动端浏览器:在菜单中选择“添加到主屏幕”或“Add to Home Screen”。

应用流程

1、index.html 启动应用,按顺序加载脚本:依赖库 → 全局变量 → 工具函数 → UI 操作 → 压缩逻辑。

2、用户拖放或选择图片后,events.js 捕获事件并触发 compression.js 中的压缩函数。

3、ui.js 解析用户设置(如质量、尺寸),utilities.js 验证参数,生成配置对象。

4、图片预处理:HEIC、ICO 等不支持格式需解码,AVIF 会转为有损格式避免文件变大。

5、使用 browser-image-compression.js 执行压缩,处理结果通过 download.js 下载或打包。

依赖更新方法

项目采用原生 JavaScript,无需包管理器,可通过 curl 命令更新依赖:

# 浏览器图像压缩库
curl -o assets/vendor/browser-image-compression.js https://raw.githubusercontent.com/Donaldcwl/browser-image-compression/refs/heads/master/dist/browser-image-compression.js

# HEIC 解码库
curl -o assets/vendor/heic-to.js https://raw.githubusercontent.com/hoppergee/heic-to/refs/heads/main/dist/iife/heic-to.js

# ICO 处理库
curl -o assets/vendor/ico.js https://unpkg.com/icojs/dist/ico.js

# PNG 转 ICO 库(需额外调整)
curl -o assets/vendor/png2ico.js https://raw.githubusercontent.com/datvm/PNG2ICOjs/refs/heads/master/src/png2icojs.js
# 调整代码使其支持全局调用
sed -i '' 's/^export class/class/' assets/vendor/png2ico.js
echo "\nwindow.PngIcoConverter = PngIcoConverter;" >> assets/vendor/png2ico.js

# 其他依赖(如 JSZip)
curl -o assets/vendor/jszip.js https://raw.githubusercontent.com/Stuk/jszip/refs/heads/main/dist/jszip.min.js