Files
OpenRouter_Image/README.md

238 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OpenRouter Image Generator
基于OpenRouter API的智能图像生成Web应用提供完整的图像生成、管理和批量处理功能。
## ✨ 核心功能
### 🎨 图像生成
- **单张生成**: 快速生成单个图像
- **批量生成**: 一次性生成1-20张图像可配置数量
- **参考图像**: 支持上传参考图像进行图像到图像的生成
- **重试机制**: 内置API请求重试机制提高成功率
### 🖼️ 图像管理
- **图像画廊**: 网格布局展示所有生成的图像
- **全屏查看**: 点击图像进入全屏查看模式
- **图像导航**: 在查看器中左右翻页浏览图像
- **批量下载**: 一键下载所有生成的图像
- **单独下载**: 下载指定图像文件
- **图像删除**: 删除不需要的图像
- **URL复制**: 复制图像链接到剪贴板
### 💬 对话功能
- **聊天历史**: 完整的对话记录管理
- **消息复制**: 复制用户或AI的消息内容
- **消息编辑**: 编辑已发送的消息内容
- **折叠界面**: 手风琴式UI节省空间
### ⚙️ 配置管理
- **API设置**: 完整的OpenRouter API配置
- **连接测试**: 实时测试API连接状态
- **本地存储**: 使用IndexedDB持久化保存数据
- **存储清理**: 一键清除所有本地数据
## 🚀 快速开始
### 1. 获取API密钥
1. 访问 [OpenRouter官网](https://openrouter.ai/)
2. 注册并创建API密钥
### 2. 配置应用
1. 打开应用,展开"API设置"面板
2. 输入您的API Key
3. 点击"测试连接"验证配置
### 3. 开始使用
- **单张生成**: 输入描述,点击"生成一张"
- **批量生成**: 设置生成数量,点击"批量生成"
- **参考图像**: 拖拽或选择图像上传
## 📋 支持的AI模型
| 模型 | 描述 | 费用 |
|------|------|------|
| `google/gemini-2.5-flash-image-preview:free` | Google Gemini 2.5 Flash 图像预览版 | 免费 |
## ⚡ 主要特性
### 技术特性
- **响应式设计**: 适配桌面和移动设备
- **拖拽上传**: 直观的文件拖拽界面
- **实时预览**: 即时显示上传的图像
- **加载指示**: 清晰的加载状态显示
- **错误处理**: 完善的错误捕获和用户提示
- **存储管理**: 智能的本地存储空间管理
### UI/UX特性
- **手风琴界面**: 可折叠的设置和历史面板
- **全屏查看器**: 沉浸式图像查看体验
- **批量操作**: 支持批量生成和批量下载
- **状态指示器**: 实时显示连接和操作状态
- **快捷操作**: 键盘快捷键支持Enter发送
## 🛠️ 技术实现
### 前端技术栈
- **HTML5**: 语义化标记
- **CSS3**: 响应式设计和动画
- **JavaScript (ES6+)**: 原生JS实现
- **Bootstrap 5**: UI框架
- **Font Awesome**: 图标库
### 数据存储
- **IndexedDB**: 主要数据持久化存储
- **LocalStorage**: 配置数据备份
- **内存管理**: 自动清理过期数据
### 核心功能实现
#### API调用与重试
```javascript
async generateImageWithRetry(message, images, settings, imageIndex, totalImages) {
const maxRetries = 3;
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await this.generateImage(message, images, settings);
} catch (error) {
if (attempt === maxRetries) throw error;
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
}
}
}
```
#### 批量生成管理
```javascript
async sendBatchMessage() {
const batchCount = parseInt(document.getElementById('batchCount').value) || 6;
const promises = [];
for (let i = 0; i < batchCount; i++) {
promises.push(this.generateImageWithRetry(message, images, settings, i, batchCount));
}
await Promise.allSettled(promises);
}
```
## 🎯 使用示例
### 基本图像生成
```
生成一张美丽的日落海滩风景图
```
### 基于参考图像
1. 上传参考图像
2. 输入: `基于上传的图像风格,生成一座现代建筑`
### 批量生成
1. 设置生成数量为10
2. 输入: `科幻城市建筑,未来主义风格`
3. 点击"批量生成"
### 复杂场景描述
```
生成一张赛博朋克风格的未来城市夜景,包含霓虹灯、飞行汽车和摩天大楼,色调以蓝紫色为主,具有强烈的科技感和未来感
```
## 📱 浏览器支持
| 浏览器 | 版本要求 | 支持状态 |
|--------|----------|----------|
| Chrome | 80+ | ✅ 完全支持 |
| Firefox | 75+ | ✅ 完全支持 |
| Safari | 13+ | ✅ 完全支持 |
| Edge | 80+ | ✅ 完全支持 |
## 📐 配置选项
### API设置
- **API Key**: OpenRouter API密钥
- **Base URL**: API端点 (默认: `https://openrouter.ai/api/v1`)
- **模型选择**: 支持的AI模型列表
- **超时时间**: 请求超时限制 (默认: 600秒)
- **代理设置**: 可选的代理服务器配置
### 生成设置
- **生成数量**: 1-20张图像 (批量生成)
- **图像格式**: 支持 JPG, PNG, GIF, WebP
- **文件大小限制**: 最大10MB
## 🔧 故障排除
### 常见问题
**连接测试失败**
- 检查API密钥是否正确输入
- 确认网络连接稳定
- 验证Base URL设置正确
**图像生成失败**
- 确认API余额充足
- 检查提示词是否合适
- 尝试更换模型
**图像无法显示**
- 检查网络连接
- 清除浏览器缓存
- 尝试刷新页面
**存储空间不足**
- 使用"清除存储数据"功能
- 删除不需要的图像
- 检查浏览器存储限制
### 调试方法
1. 打开浏览器开发者工具 (F12)
2. 查看Console标签的错误信息
3. 检查Network标签的请求状态
4. 验证API响应内容
## 📊 性能优化
### 存储优化
- 自动清理过期聊天记录 (最多50条)
- 限制生成图像数量 (最多20张)
- 使用IndexedDB替代LocalStorage
### 网络优化
- 请求重试机制
- 并发控制
- 超时处理
### 用户体验优化
- 加载状态指示
- 批量操作进度显示
- 错误信息友好提示
## 🔒 安全注意事项
1. **API密钥安全**: 密钥仅存储在本地浏览器,不会上传到服务器
2. **隐私保护**: 所有数据本地存储,不收集用户信息
3. **文件安全**: 上传文件仅用于图像生成,不会被保存或传输
4. **网络安全**: 仅与OpenRouter官方API通信
## 📄 许可证
本项目基于 MIT 许可证开源。详见 [LICENSE](LICENSE) 文件。
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request
1. Fork 本仓库
2. 创建功能分支
3. 提交更改
4. 发起 Pull Request
## 📞 支持与反馈
如有问题或建议,请:
- 提交 GitHub Issue
- 查看项目Wiki
- 参与社区讨论
---
**提示**: 本应用为前端静态应用可直接在浏览器中运行无需服务器部署。建议在HTTPS环境下使用以确保最佳安全性。