AI 工具
单帧中的 AI 面板包含三项功能:AI 增强、色调匹配和放大。它们在运行位置上并不相同。AI 增强会将预览图发送至 OpenAI API——这是 OpenEnlarge 中唯一会将图像数据传输到外部的工具。色调匹配和放大均完全在本地设备上运行,图像数据不会离开您的计算机。
AI 增强
AI 增强对当前单帧预览图进行重新生成,以减少噪点、灰尘和划痕。结果是对您扫描图像的创意性再诠释,而非逐像素的忠实还原:模型可能会生成原图中并不存在的细节。请将其用于视觉风格,而非作为精准输出。
使用 AI 增强前,您需要在设置中添加自己的 OpenAI API 密钥。没有密钥时,增强按钮将显示"请在设置中添加 OpenAI API 密钥。"并不执行任何操作。OpenEnlarge 不提供也不代理任何 API 密钥——费用将从您自己的 OpenAI 账户扣除。
隐私说明:点击"增强"后,当前预览图(以 base64 编码的 PNG 格式)将被发送至 OpenAI API。这是 OpenEnlarge 中唯一将图像数据传输至外部服务器的操作。相关数据受 OpenAI 的使用条款和隐私政策约束。
结果到达后,将以缩略图形式显示在面板中。按住按住对比原图按钮可在原图与增强结果之间切换,松开后恢复显示结果。点击缩略图可全屏查看。
点击下载增强后的图像…将结果保存到磁盘。保存对话框支持 PNG、TIFF 和 JPEG 格式。文件通过 api.saveEnhanced() 以结果原始分辨率写出,此步骤不进行放大。
获得增强结果后,其下方会出现放大此结果区域,可对 AI 增强图像而非原始单帧输出运行本地放大模型。具体说明见下方放大章节。
深入原理
API 调用(api.ts):前端调用 api.aiEnhanceImage(imageBase64, apiKey),触发 Tauri 命令 ai_enhance_image。后端将 base64 图像和用户提供的 API 密钥发送至 OpenAI API,并以 base64 字符串形式返回增强结果。调用时捕获的源预览存储于 source 变量,用于前后对比切换(showBefore)。保存使用 api.saveEnhanced(outPath, imageBase64, format) → Tauri 命令 save_enhanced。格式类型为 ExportFormat:{ kind: "png" | "tiff" | "jpeg", bitDepth?: 16, quality?: number }。
色调匹配
色调匹配导入一张参考图像,并调整当前扫描的显影参数,使其白平衡、对比度和饱和度与参考图一致。所有处理均在本地完成——图像数据不会离开您的计算机。
点击导入参考图像选取任意 JPEG、PNG、TIFF 或 WebP 文件。面板中会显示参考图缩略图,随时可点击更换参考图。
加载参考图后,点击匹配以计算匹配结果。匹配通过 api.colorMatchParams() 在本地运行,并将一组混合后的显影参数写入当前图像的设置,作为单步可撤销操作(⌘Z / Ctrl Z 可还原)。
强度滑块(0–100%,默认 60%)在匹配前的数值和完整匹配结果之间进行混合。拖动时预览实时更新,无需后端往返——完整匹配仅计算一次并存储,滑块在本地进行插值。提交滑块值会增加一步撤销记录。
点击重置匹配可将参数还原至匹配前的状态,并清除已存储的匹配数据。重置同样是单步可撤销操作。
匹配完成后,您可以继续在单帧面板中正常调整任意滑块。匹配仅影响参数的一个有限子集(详见下方原理),不触及其他控件。
深入原理
API 调用(api.ts):api.colorMatchParams(id, params, refPath, 100) 触发 Tauri 命令 color_match_params,传入当前图像 id、完整 InvertParams、参考文件路径和强度值 100(完整匹配)。后端返回一个 MatchedParams 对象——InvertParams 的 Pick 子集,精确覆盖以下字段:temp、tint、exposure、contrast、saturation、cg_sh_hue、cg_sh_sat、cg_sh_lum、cg_hi_hue、cg_hi_sat、cg_hi_lum。前端将这些键的匹配前数值捕获到 origScoped,完整匹配存储于 matchedFull。强度滑块按键插值:blended[k] = origScoped[k] + (matchedFull[k] − origScoped[k]) × (strength / 100)。参考图缩略图通过 api.referenceThumb(path) → Tauri 命令 reference_thumb 获取。
放大
放大在设备端运行超分辨率模型,将已显影的图像放大至最长边 4K 或 8K。模型下载一次后完全在本地运行,任何图像数据均不会上传。
首次打开 AI 面板时,OpenEnlarge 会检查放大模型是否已安装。若未安装,将显示提示及大致下载大小(MB)。点击下载放大器进行下载;进度条实时显示下载进度(字节接收情况通过 upscale://download-progress Tauri 事件流式传输)。
模型安装完成后,通过 4K / 8K 分段控件选择目标分辨率(4K = 3840 像素;8K = 7680 像素,均以最长边计;默认 8K)。点击放大开始处理。进度条跟踪分块完成情况。结果以预览图形式显示在面板中,附带输出像素尺寸。
若源图像最长边已达到或超过 8K,放大将不会增加细节(应用会提示这一情况)。较小的原图往往能获得最佳效果,模型能够真正重建精细细节。
点击保存放大后的图像…保存结果。保存对话框支持 PNG、TIFF(16 位)和 JPEG 格式。
若已有 AI 增强结果,其上方会出现放大此结果区域,可对 AI 增强的 PNG 而非已显影扫描进行放大。两种路径使用相同的本地模型。
深入原理
API 调用(api.ts):api.upscalerStatus() → Tauri upscaler_status 返回 { installed: boolean, downloadBytes: number }。api.downloadUpscaler() → download_upscaler 触发模型下载。对于已显影图像,api.upscaleImage(id, params, imageCrop, geom, targetLong) → upscale_image 先渲染全分辨率图像,再进行超分辨率处理。对于 AI 增强结果,api.upscaleEnhanced(imageBase64, targetLong) → upscale_enhanced 直接接收 base64 PNG。两者均返回 { previewDataUrl: string, outW: number, outH: number }。分块进度通过 upscale://progress 事件流式传输({ done, total })。保存调用 api.saveUpscaled(outPath, format) → save_upscaled。