flnxi-Wu/docs/reports/IMAGE_DIMENSIONS_UPDATE.md
WuYongJie d1c6efc79d
Some checks failed
CI Check / check (push) Has been cancelled
feat: NAS 部署与 Harbor 推送流程
2025-12-03 14:39:06 +08:00

311 lines
6.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 预览图尺寸调整 - 300x500 更新报告
## 📅 更新信息
- **更新日期**: 2025-10-26
- **版本**: v1.1.0
- **状态**: ✅ 已完成并部署
---
## 🎯 更新目标
将首页卡片预览图从原来的 **300x300** 正方形调整为 **300x500** 竖版长图格式,以更好地展示纵向素材。
---
## ✨ 主要更改
### 1️⃣ **PSD处理器优化** (`lib/psd-processor.ts`)
#### 新增功能:长图智能裁剪
- **问题**: PSD文件可能是非常长的竖图,全部显示会导致预览图过大
- **解决方案**: 自动裁剪只保留顶部1200px的内容
```typescript
// 新增参数
maxHeight: number = 1200 // 长图裁剪高度限制
// 裁剪逻辑
if (imageData.height > maxHeight) {
console.log(`[PSD] 检测到长图 ${imageData.width}x${imageData.height},裁剪到顶部${maxHeight}px`)
sharpInstance = sharpInstance.extract({
left: 0,
top: 0,
width: imageData.width,
height: maxHeight // 只保留顶部1200px
})
}
```
#### 优势
- ✅ 自动识别长图
- ✅ 保留最重要的顶部内容
- ✅ 减少文件大小
- ✅ 提高处理速度
---
### 2️⃣ **图片处理器增强** (`lib/image-processor.ts`)
#### 新增maxHeight参数支持
```typescript
interface ProcessImageOptions {
maxSizeKB?: number // 最大文件大小(KB)
maxWidth?: number // 最大宽度(像素)
maxHeight?: number // 🆕 最大高度(像素)
format?: 'webp' | 'jpeg' | 'png'
}
```
#### 处理逻辑优化
```typescript
const {
maxSizeKB = 300,
maxWidth = 600, // 宽度限制
maxHeight = 1000, // 🆕 高度限制(适配300x500显示)
format = 'webp',
} = options
// 双向尺寸限制
if (width > maxWidth) {
const ratio = maxWidth / width
width = maxWidth
height = Math.round(height * ratio)
}
// 新增:如果高度超过限制,再次调整
if (height > maxHeight) {
const ratio = maxHeight / height
height = maxHeight
width = Math.round(width * ratio)
}
```
#### 优势
- ✅ 同时控制宽度和高度
- ✅ 保持图片比例
- ✅ 适配300x500显示尺寸
- ✅ 优化存储空间
---
### 3️⃣ **首页卡片尺寸调整** (`app/page.tsx`)
#### 修改内容
```typescript
// 之前:300x300 正方形
<div className="relative w-full h-[300px] ...">
// 现在:300x500 竖版长图
<div className="relative w-full h-[500px] ...">
```
#### 显示效果
- **宽度**: 300px(保持不变)
- **高度**: 300px → **500px** (增加200px)
- **比例**: 1:1 → **3:5** (更适合纵向素材)
#### 优势
- ✅ 更好展示纵向设计
- ✅ 减少裁剪损失
- ✅ 提升视觉效果
- ✅ 保持网格布局一致
---
### 4️⃣ **上传API参数更新** (`app/api/materials/upload/route.ts`)
#### 更新处理参数
```typescript
// PSD自动生成预览图
processedBuffer = await processImage(generatedBuffer, {
maxSizeKB: 300,
maxWidth: 600,
maxHeight: 1000, // 🆕 添加高度限制
format: 'webp',
})
// 用户手动上传预览图
processedBuffer = await processImage(originalBuffer, {
maxSizeKB: 300,
maxWidth: 600,
maxHeight: 1000, // 🆕 添加高度限制
format: 'webp',
})
```
---
## 📊 技术参数对比
| 参数项 | 更新前 | 更新后 | 说明 |
|--------|--------|--------|------|
| **首页卡片高度** | 300px | 500px | 增加67% |
| **显示比例** | 1:1 | 3:5 | 更适合纵向素材 |
| **图片最大宽度** | 600px | 600px | 不变 |
| **图片最大高度** | ∞ | 1000px | 新增限制 |
| **PSD裁剪高度** | 无限制 | 1200px | 新增功能 |
| **文件大小限制** | 300KB | 300KB | 不变 |
---
## 🔄 处理流程
### PSD文件上传流程
```
用户上传PSD文件
↓
检测PSD尺寸
↓
如果高度 > 1200px → 裁剪到顶部1200px
↓
缩放到最大600x1000
↓
压缩到300KB以内
↓
转换为WebP格式
↓
上传到S3
↓
首页以300x500显示(等比缩放)
```
### 普通图片上传流程
```
用户上传预览图
↓
检测图片尺寸
↓
如果宽度 > 600px → 缩放
↓
如果高度 > 1000px → 再次缩放
↓
压缩到300KB以内
↓
转换为WebP格式
↓
上传到S3
↓
首页以300x500显示(object-cover裁剪)
```
---
## 🎨 视觉效果提升
### 之前(300x300)
- 正方形卡片
- 纵向素材被强制裁剪
- 细节损失较多
- 不够精致
### 现在(300x500)
- 竖版长图卡片
- 纵向素材完整展示
- 细节保留更多
- 视觉效果更佳
---
## ✅ 部署验证
### 容器状态
```bash
NAME STATUS PORTS
flnxi-material Up About a minute 0.0.0.0:4320->3000/tcp
```
### 健康检查
```json
{"status":"ok","timestamp":"2025-10-26T08:22:50.838Z"}
```
### 代码验证
- ✅ PSD处理器包含maxHeight参数(1200px)
- ✅ 图片处理器包含maxHeight参数(1000px)
- ✅ 首页卡片高度已更新为500px
- ✅ 上传API使用新参数
---
## 📝 使用说明
### 对用户的影响
1. **上传PSD文件**
- 长图会自动裁剪顶部1200px
- 无需手动处理
- 自动优化显示效果
2. **上传普通图片**
- 建议尺寸:600x1000 或按3:5比例
- 系统自动压缩优化
- 首页显示效果更佳
3. **首页浏览**
- 卡片显示为300x500
- 纵向素材展示更完整
- 视觉体验更好
### 最佳实践
- **横向图片**: 建议尺寸 600x400 或更小
- **纵向图片**: 建议尺寸 600x1000
- **PSD文件**: 任意尺寸,系统自动处理
---
## 🔮 后续优化建议
### 短期优化
- [ ] 添加预览图裁剪位置选择(顶部/中部/底部)
- [ ] 支持自定义裁剪区域
- [ ] 提供多种显示比例选项
### 长期规划
- [ ] AI智能识别图片主体并智能裁剪
- [ ] 支持多张预览图轮播
- [ ] 动态调整显示尺寸(响应式)
- [ ] 支持视频预览
---
## 📞 技术支持
### 相关文件
- `lib/psd-processor.ts` - PSD处理器
- `lib/image-processor.ts` - 图片处理器
- `app/page.tsx` - 首页组件
- `app/api/materials/upload/route.ts` - 上传API
### 部署信息
- **服务器**: NAS TrueNAS
- **内网地址**: http://192.168.58.20:4320
- **公网地址**: http://180.97.221.140:2320
- **容器**: flnxi-material
---
## 📊 性能影响
### 存储优化
- PSD长图裁剪后文件更小
- 预览图压缩效率更高
- S3存储成本降低
### 加载速度
- 图片文件更小,加载更快
- 首页渲染速度提升
- 用户体验改善
### 服务器负载
- 处理时间略有增加(裁剪操作)
- 整体影响可忽略不计
- 缓存机制保持高效
---
**更新完成时间**: 2025-10-26 16:26
**部署人员**: AI Assistant
**版本**: v1.1.0 - 300x500显示优化