gongxiangp2/IMAGE_DIMENSIONS_UPDATE.md
chenpei f17f0922a4 docs: Add image dimensions update report (300x500)
- Document PSD long image cropping feature (top 1200px)
- Document image processor maxHeight support
- Document homepage card height change to 500px
- Include technical specifications and best practices
2025-10-26 16:27:50 +08:00

6.6 KiB
Raw Blame History

预览图尺寸调整 - 300x500 更新报告

📅 更新信息

  • 更新日期: 2025-10-26
  • 版本: v1.1.0
  • 状态: ✅ 已完成并部署

🎯 更新目标

将首页卡片预览图从原来的 300x300 正方形调整为 300x500 竖版长图格式,以更好地展示纵向素材。


✨ 主要更改

1️⃣ PSD处理器优化 (lib/psd-processor.ts)

新增功能:长图智能裁剪

  • 问题: PSD文件可能是非常长的竖图,全部显示会导致预览图过大
  • 解决方案: 自动裁剪只保留顶部1200px的内容
// 新增参数
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参数支持

interface ProcessImageOptions {
  maxSizeKB?: number  // 最大文件大小(KB)
  maxWidth?: number   // 最大宽度(像素)
  maxHeight?: number  // 🆕 最大高度(像素)
  format?: 'webp' | 'jpeg' | 'png'
}

处理逻辑优化

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)

修改内容

// 之前: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)

更新处理参数

// 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)

  • 竖版长图卡片
  • 纵向素材完整展示
  • 细节保留更多
  • 视觉效果更佳

✅ 部署验证

容器状态

NAME                    STATUS              PORTS
youyidian-3d-material   Up About a minute   0.0.0.0:4320->3000/tcp

健康检查

{"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

部署信息


📊 性能影响

存储优化

  • PSD长图裁剪后文件更小
  • 预览图压缩效率更高
  • S3存储成本降低

加载速度

  • 图片文件更小,加载更快
  • 首页渲染速度提升
  • 用户体验改善

服务器负载

  • 处理时间略有增加(裁剪操作)
  • 整体影响可忽略不计
  • 缓存机制保持高效

更新完成时间: 2025-10-26 16:26
部署人员: AI Assistant
版本: v1.1.0 - 300x500显示优化