ec2e0a3ce519aab01f6c15177c77e2eb8a9f00cd
## 新功能 ### 视频时长放宽(Feature 5) - LivePhotoCore: targetDuration 从固定 0.917 秒改为动态计算(0.5-5.0 秒) - LivePhotoCore: keyFrameTime 按比例映射到目标视频时长 - EditorView: slider 上限从 1.5 秒提升至 5.0 秒 - EditorView: 超过 2 秒显示壁纸兼容性提示,超过 3 秒显示分享截断提示 ### 自定义封面帧(Feature 4) - ExportParams: 新增 coverImageURL 字段 - EditorView: 封面帧区域增加 PhotosPicker 从相册导入照片作为封面 - AppState: coverImageURL 传递到 LivePhotoWorkflow - EditorView: onDisappear 时清理临时封面文件,避免磁盘泄漏 ### 收藏/模板预设(Feature 6) - 新增 PresetManager.swift: EditingPreset 模型 + 预设管理器 - 支持保存/加载/删除预设,最多 10 个 - UserDefaults + iCloud KV Store 双重持久化 - EditorView: 预设保存/加载 UI + 空状态 ContentUnavailableView ### iCloud 同步(Feature 7) - RecentWorksManager: 新增 NSUbiquitousKeyValueStore 同步 - PresetManager: 同步支持 iCloud KV Store - 合并策略:按 ID 去重,保留最新记录,限制条数上限 ## Bug 修复 ### P0 级 - ResultView: Live Photo 预览比例从固定值改为动态计算 aspectRatio - EditorView: 修复本地化字符串拼接问题(使用 String(localized:) 替代硬编码) ### P1 级 - EditorView: 预设列表空状态显示 ContentUnavailableView - ProcessingView: 进度环与百分比文本动画同步(统一 overallProgress 计算) ### P2 级 - EditorView: 添加触觉反馈(比例切换、生成按钮、预设保存、封面导入) - HomeView: 删除作品触觉反馈 + 入场动画优化 - ProcessingView: 脉冲动画背景尺寸微调(160-175pt) - LaunchScreen: 品牌启动画面(App Icon + 标题 + 副标题) ## 本地化 - 新增约 25 个本地化 key,覆盖 8 种语言 (zh-Hans, zh-Hant, en, ja, ko, es, fr, ar) - 包含:预设管理、封面导入、时长提示、删除确认、 空状态、诊断建议等全部新增 UI 文案 ## 改动文件(16 个) - Sources/LivePhotoCore/LivePhotoCore.swift — 动态时长 + coverImageURL - to-live-photo/AppState.swift — coverImageURL 传递 - to-live-photo/PresetManager.swift — 新增预设管理器 - to-live-photo/RecentWorksManager.swift — iCloud 同步 - to-live-photo/DesignSystem.swift — 新增设计令牌 - to-live-photo/Localizable.xcstrings — 25+ 本地化 key - to-live-photo/Views/EditorView.swift — 4 项新功能 UI - to-live-photo/Views/HomeView.swift — 删除作品 + 触觉反馈 - to-live-photo/Views/ProcessingView.swift — 进度环动画修复 - to-live-photo/Views/ResultView.swift — 预览比例修复 + Live Photo 预览 - to-live-photo/Base.lproj/LaunchScreen.storyboard — 品牌启动画面 - to-live-photo/Assets.xcassets/Launch*.colorset — 启动画面颜色资源 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
livephotomaker-pages
@ 080d8828a0
Live Photo Studio
将任意视频转换为 iOS Live Photo,支持锁屏动态壁纸
✨ 功能特性
- 📹 视频转 Live Photo — 导入相册视频,一键生成系统可识别的 Live Photo
- ✂️ 精准裁剪 — 时长裁剪(1~1.5s)+ 多比例模板(锁屏/全面屏/4:3/1:1)
- 🎨 AI 超分辨率 — 集成 Real-ESRGAN,智能提升画面清晰度(On-Demand Resources 按需下载)
- 🖼️ 封面帧选择 — 滑杆精选最佳静态封面
- 📱 壁纸引导 — 系统版本适配的设置步骤引导
- 🌍 9 语言国际化 — 简/繁中文、英、日、韩、法、西、阿拉伯语,应用内切换
- 🎯 首次引导 — 4 页 Onboarding 流程,快速了解核心功能
- ⚙️ 设置中心 — 语言切换、缓存管理、权限状态、隐私政策
- 🕐 最近作品 — 自动记录历史作品,缩略图预览,一键设为壁纸
📱 系统要求
- iOS / iPadOS 18.0+
- Xcode 16.0+
- Swift 6.0
🚀 快速开始
克隆项目
git clone https://git.let5see.xyz/let5see/to-live-photo.git
cd to-live-photo
构建运行
# 模拟器构建
xcodebuild -scheme to-live-photo \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
build
# 真机 Archive
xcodebuild -scheme to-live-photo \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath build/to-live-photo.xcarchive \
archive
🏗️ 项目结构
to-live-photo/
├── Sources/LivePhotoCore/ # Swift Package - 核心库
│ ├── LivePhotoCore.swift # 生成管线、数据模型
│ ├── AIEnhancer/ # Real-ESRGAN 超分辨率(5 个模块)
│ └── Resources/ # metadata.mov
├── to-live-photo/ # iOS App
│ ├── Views/ # SwiftUI 视图(8 个)
│ │ ├── OnboardingView.swift # 首次引导
│ │ ├── HomeView.swift # 首页导入 + 最近作品
│ │ ├── EditorView.swift # 编辑裁剪
│ │ ├── ProcessingView.swift # 处理进度
│ │ ├── ResultView.swift # 保存结果
│ │ ├── WallpaperGuideView.swift # 壁纸引导
│ │ ├── SettingsView.swift # 设置中心
│ │ └── PrivacyPolicyView.swift # 隐私政策 / 使用条款
│ ├── AppState.swift # 全局状态 + 导航路由
│ ├── ContentView.swift # 根视图 + 截屏保护
│ ├── DesignSystem.swift # Soft UI 设计令牌
│ ├── LanguageManager.swift # 多语言切换
│ ├── RecentWorksManager.swift # 最近作品管理
│ ├── Analytics.swift # 埋点统计
│ ├── Localizable.xcstrings # 主国际化文件(9 语言)
│ └── InfoPlist.xcstrings # Info.plist 国际化
├── scripts/ # 构建 & 国际化脚本
├── app-store-screenshots/ # App Store 截图(8 语言 × 6 张)
├── livephotomaker-pages/ # 官网子模块(8 语言)
└── docs/ # 文档
🔧 技术架构
生成管线
normalize → extractKeyFrame → aiEnhance → writePhotoMetadata → writeVideoMetadata → saveToAlbum → validate
核心参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| 时长 | 0.917s | 与 iPhone 原生 Live Photo 一致 |
| 分辨率 | 1080×1920 | 竖屏最大,可配置兼容模式降至 720p |
| 帧率 | 60fps | 兼容模式可降至 30fps |
| 编码 | H.264 | 兜底策略确保兼容性 |
| HDR | 转 SDR | 壁纸场景更稳定 |
AI 超分辨率
- 模型:Real-ESRGAN x4plus(Core ML,通过 On-Demand Resources 按需下载)
- 处理:512×512 分块 + 64px 重叠 + 流式线性混合(内存优化)
- 格式转换:vImage 加速 BGRA↔RGBA
- 放大:约 2.25x(输入 512→输出 2048)
🌍 国际化
支持 9 种语言,应用内实时切换:
| 语言 | 代码 |
|---|---|
| 简体中文 | zh-Hans |
| 繁体中文 | zh-Hant |
| English | en |
| 日本語 | ja |
| 한국어 | ko |
| Français | fr |
| Español | es |
| العربية | ar |
| 跟随系统 | — |
📋 开发规范
Git 提交类型
feat: 新功能fix: 修复缺陷refactor: 重构(行为不变)chore: 构建、依赖、工具docs: 仅文档
代码规范
- 遵循
DesignSystem.swift令牌,禁止硬编码颜色/间距 - 新增 View 必须包含
accessibilityLabel - 新增 View 必须适配深色模式和 iPad
- 触控目标 ≥ 44pt
📄 文档
| 文档 | 说明 |
|---|---|
| CLAUDE.md | AI 助手指令(宪法文档) |
| TASK.md | 里程碑与任务追踪 |
| docs/USER_GUIDE.md | 用户使用手册 |
| docs/TEST_MATRIX.md | 测试用例矩阵 |
| docs/APP_STORE_METADATA.md | 上架信息 |
| docs/APP_STORE_METADATA_I18N.md | 多语言上架信息 |
📜 许可证
MIT License - 详见 LICENSE
Made with ❤️ for iOS Live Photos
Description
Languages
Swift
74.5%
Python
24.8%
Shell
0.7%