Skip to content

Latest commit

 

History

History
118 lines (96 loc) · 4.3 KB

File metadata and controls

118 lines (96 loc) · 4.3 KB

CLAUDE.md

本文件为Claude Code (claude.ai/code) 在此代码库中工作时提供指导。

项目概述

这是一个中文图片处理网页应用,允许用户调整图片尺寸和去除背景。专门为微信表情包上传需求设计。该应用完全在客户端运行,使用HTML5 Canvas API进行图片处理,无需任何服务器依赖。

核心功能

  • 单张图片处理: 调整单张图片尺寸并去除背景
  • 批量图片处理: 同时处理多张图片,统一下载为ZIP文件
  • 图片调整大小: 将图片转换为特定尺寸(640×640、240×240、50×50或750×400像素)
  • 背景去除: 使用边缘检测算法自动去除背景
  • 文件大小控制: 自动压缩图片确保不超过500KB
  • 格式支持: 支持JPG、PNG、GIF格式,并自动选择最佳格式
  • 移动端响应式: 针对桌面和移动设备使用进行优化

架构设计

文件结构

Resize-image/
├── index.html      # 主要应用界面
├── script.js       # 核心图片处理逻辑
├── style.css       # 响应式样式
└── README.md       # 用户文档

核心处理流程

单张处理流程

  1. 图片上传: 使用FileReader API在本地加载图片
  2. 预览和验证: 显示图片信息并验证格式
  3. 处理选项:
    • 尺寸选择(正方形或矩形)
    • 质量调整(10-100%)
    • 背景去除开关
  4. Canvas处理:
    • 正方形裁剪并居中对齐
    • 矩形调整大小并保持宽高比
    • 使用边缘检测去除背景
  5. 格式优化:
    • 使用二分查找找到最佳JPEG质量
    • PNG用于透明背景和小尺寸图片
    • 支持时使用WebP作为备选
  6. 下载: 生成Blob URL并使用合适的文件名

批量处理流程

  1. 多文件上传: 支持同时选择多张图片文件
  2. 批量预览: 网格化显示所有待处理图片的预览
  3. 统一设置: 为所有图片应用相同的处理参数
  4. 逐个处理: 异步处理每张图片,显示实时进度
  5. 结果展示: 网格化显示处理结果,支持单独下载
  6. 批量下载: 使用JSZip库将所有处理结果打包为ZIP文件下载

背景去除算法

背景去除使用颜色边缘检测方法:

  • 分析边缘像素以确定背景颜色
  • 使用欧几里得距离计算颜色相似度
  • 为背景像素设置透明alpha通道
  • 可调节的灵敏度阈值(0-100%)

尺寸特定处理

  • 50×50: 使用PNG或高质量JPEG以保证清晰度
  • 240×240: 平衡压缩与格式优化
  • 640×640: 积极的JPEG压缩以控制文件大小
  • 750×400: 矩形特定处理,保持宽高比

开发工作流程

运行应用

由于这是纯客户端应用,只需在现代网页浏览器中打开index.html即可。无需构建过程或服务器。

测试注意事项

  • 使用各种图片格式测试(JPG、PNG、GIF)
  • 在不同背景类型上验证背景去除效果
  • 测试文件大小限制(500KB限制)
  • 检查移动设备上的响应行为
  • 验证跨浏览器的下载功能

批量功能测试要点

  • 测试大量图片(10+张)的批量处理性能
  • 验证批量上传的文件类型验证
  • 测试批量处理进度的准确显示
  • 验证ZIP文件下载的完整性
  • 测试处理失败时的错误处理
  • 验证单个下载与批量下载的一致性
  • 测试模式切换时状态的正确重置

代码模式

  • 纯JavaScript,最小化外部依赖
  • 使用Canvas API进行所有图片操作
  • 使用FileReader API处理本地文件
  • 使用Blob API生成和下载文件
  • 使用JSZip库进行批量文件的ZIP打包
  • 异步处理确保UI响应性
  • 事件驱动的UI更新
  • Promise-based批量处理流程

重要说明

  • 应用完全在客户端运行 - 无服务器上传
  • 背景去除在具有纯色简单背景的图片上效果最佳
  • 图片质量与文件大小的权衡会自动处理
  • 中文界面,本地化的用户消息
  • 专门为微信表情包上传需求设计

批量功能特点

  • 支持两种处理模式:单张处理和批量处理
  • 批量处理使用统一的设置参数
  • 异步处理确保UI不会阻塞
  • 提供实时进度显示
  • 支持单个图片下载和整体ZIP下载
  • 自动生成有意义的文件名(包含原始名称和尺寸信息)
  • 完善的错误处理和失败重试机制