跳转到主要内容
返回作品列表
开源项目维护中

ImagePort

Desktop AI image generation and editing workspace with Gallery, masks, agent mode, custom providers, local history, and full backup support.

ImagePort logo

ImagePort

桌面端 AI 图片生成与编辑工作台。

把参考图、蒙版、生成历史、Agent 对话和本地备份放进一个更稳定的 Tauri 应用里,让 OpenAI-compatible 图片工作流不再受浏览器 CORS 和本地存储限制影响。

Highlights

能力

说明

Gallery 生图与改图

支持 OpenAI Images / Responses、xAI Imagine、Gemini Interactions 和自定义 manifest。

参考图与蒙版

输入区可加入多张参考图,内置 mask 编辑器,适合反复迭代局部修改。

Agent 模式

基于 Responses API 的多轮创作流,支持会话、工具调用预算、partial images、停止、重试和继续。

本地历史

任务记录、输入图、输出图、mask、partial images 和设置都落在本机。

收藏与批量管理

支持收藏集合、集合筛选、批量下载、批量删除,以及 Lightbox 大图查看。

完整备份

支持 ZIP 备份与恢复,避免把大图直接塞进大型 JSON。

Preview

ImagePort Gallery workspace


Gallery workspace

更多截图
ImagePort output preview and actions


输出预览与快捷操作

ImagePort mask editor


参考图遮罩编辑器

ImagePort settings dialog


应用设置

Tech Stack

层

技术

桌面容器

Tauri 2

前端

SvelteKit 2, Svelte 5

UI

shadcn-svelte, bits-ui, Tailwind CSS 4

本地数据

SQLite via @tauri-apps/plugin-sql, Tauri Store, FS

原生能力

Dialog, Clipboard Manager, Rust reqwest HTTP bridge

How It Works

flowchart LR
  A["SvelteKit UI"] --> B["Provider adapter"]
  B --> C["Tauri HTTP bridge"]
  C --> D["OpenAI / xAI / Gemini / Custom provider"]
  A --> E["SQLite task history"]
  A --> F["App data image files"]
  A --> G["Tauri Store settings"]

Loading

前端负责 Gallery、Agent、设置、收藏与交互状态;Tauri 后端负责代理 HTTP 请求、流式响应和取消请求;本地 SQLite、Store 与应用数据目录共同保存长期历史。

Quick Start

需要先安装:

  • Bun

  • Rust

  • Tauri 2 对应平台依赖

安装依赖:

bun install

启动 Web 开发服务器:

bun run dev

启动桌面端:

bun run tauri dev

生产构建:

bun run tauri build

Common Commands

命令

用途

bun test

运行前端与领域逻辑测试。

bun run check

运行 Svelte 类型与组件检查。

bun run build

构建静态前端产物。

cd src-tauri && cargo check

检查 Rust/Tauri 后端。

bun run tauri dev

启动桌面开发模式。

bun run tauri build

打包桌面应用。

bun run release 0.2.0

同步版本、提交、打 tag 并推送。

Project Layout

ImagePort-Desktop/
  src/
    lib/api/          Provider adapter、OpenAI-compatible、Responses/Agent runner
    lib/components/   Gallery、Settings、Lightbox、Mask editor、品牌组件
    lib/domain/       纯业务模型、设置归一化、下载、收藏、备份、任务历史
    lib/storage/      SQLite、Store、FS 图片文件、剪贴板、下载
    lib/tauri/        前端 Tauri command wrapper
    routes/           SvelteKit 页面入口
  src-tauri/
    capabilities/     Tauri 权限配置
    src/commands/     Tauri commands
    src/services/     Rust HTTP client、streaming、cancellation
  static/brand/       ImagePort logo 与图标草案
  docs/               发布检查清单等项目文档

API Profiles

在应用设置中创建 API 连接。模型能力预设与接口协议彼此独立:官方服务使用原生协议,第三方网关按其文档选择兼容协议,不需要为每个网站新增适配器。

Profile

适用场景

OpenAI Images

常规 /v1/images/generations 与 /v1/images/edits。

OpenAI Responses

Agent 模式,以及 Gallery 的 Responses 生图/改图路径。

xAI Grok Imagine

Gallery 文生图与 JSON 图像编辑,支持最多 3 张参考图。

Google Nano Banana

Gallery 文生图与多参考图编辑,使用 Gemini Interactions API。

Custom Provider

通过 JSON manifest 描述提交、轮询和结果解析路径。

API Key 保存在本地 Tauri Store 中。导出设置时默认不包含 API Key。

内置协议包括 OpenAI Images、OpenAI Responses、xAI Imagine Images 与 Gemini Interactions。例如,Gemini/Banana 模型既可以通过 Google 官方 Interactions 调用,也可以在中转站兼容 /v1/images/generations 时切换到 OpenAI Images。设置页会预览最终的 POST 地址,并对常见协议错配给出提示。

Gallery 参数会根据当前服务商和模型能力动态调整。Grok 与 Gemini 不支持像素级蒙版;Gemini 生成多张图片时会发起多次独立请求。Agent 模式目前仍使用 OpenAI Responses API。

Local Data

ImagePort 的数据默认保存在本机:

数据

存储位置

任务记录与 Agent 会话

SQLite

输出图、缩略图、输入图、mask、partial images

App data 图片目录

应用设置与输入草稿

Tauri Store

历史数据优先级最高:应用不会在启动时自动清理历史图片,清理动作必须由用户确认。

Acknowledgements

ImagePort 的桌面端工作流灵感来自 gpt_image_playground。感谢这个 Web 端项目在 Gallery 生图、参考图、蒙版编辑和 Agent 创作体验上的探索;ImagePort 在此基础上面向桌面端重新组织了应用结构,并重点补上跨域请求、本地大图持久化和长期历史管理。

Release

发布前至少运行:

bun test
bun run check
bun run build
cd src-tauri && cargo check

更多手动检查见 release-checklist.md。

GitHub Release 自动打包由 .github/workflows/release.yml 负责。创建 tag 并发布 Release 后,workflow 会在 macOS、Windows 和 Linux 上分别运行 tauri build,并把安装包上传到当前 Release。

使用发版命令前需保证工作区干净。命令会同步 package.json、Tauri 配置、Cargo 包和锁文件版本,创建 release commit 与 tag,并推送当前分支和 tag:

bun run release 0.2.0

随后在 GitHub 从 v0.2.0 创建并发布 Release;workflow 会检出该 tag、校验四处版本一致后构建各平台安装包。

当前 workflow 尚未配置代码签名、公证、Windows 签名证书或 updater 私钥;这些凭据后续可通过 GitHub Secrets 接入。

  1. v0.1.8v0.1.8
  2. v0.1.7v0.1.7
  3. v0.1.6v0.1.6

项目时间

开始
2026-06-04

技术栈

  • TypeScript
  • Svelte
  • JavaScript
  • Rust
  • CSS
  • HTML