Skip to content

Repository files navigation

MomentStitcher - 朋友圈长图拼接工具

一个专为朋友圈设计的智能长图拼接工具,支持将多张图片垂直拼接成适合社交媒体分享的长图,提供优雅的图形界面和强大的分组功能。

image

🤔 创作初衷

开发这个工具是因为现有的拼图软件大多需要付费,且拼接效果不尽如人意(╥╯^╰╥)。虽然当前这个工具可能还有提升空间,但咱既然会写代码,不如自己动手丰衣足食,享受自给自足的乐趣!(✿◠‿◠)


🌟 功能亮点

  • 🎯 智能分组:根据图片数量自动设置合理的每组上限
  • 📱 朋友圈优化:专为社交媒体长图分享设计
  • 🎨 可视化操作:直观的拖拽式图形界面
  • ⚡ 批量处理:支持大量图片的批量拼接
  • 🔧 灵活配置:可自定义每组图片数量
  • 📁 拖拽支持:支持文件和文件夹拖拽
  • 📊 实时预览:处理进度实时显示
  • 🧹 一键清理:内置文件夹清理功能

🚀 快速开始

1. 安装依赖

pip install -r requirements.txt

2. 启动程序

python gui_stitcher.py

3. 开始使用

  • 拖拽图片或选择输入目录
  • 设置每组图片数量(自动适应上限)
  • 点击"开始拼图"生成长图

📋 使用教程

图形界面操作步骤

  1. 📂 选择图片

    • 拖拽图片/文件夹到界面
    • 或点击"选择输入目录"浏览文件夹
  2. 🎯 智能分组

    • 设置"每组图片数量"(自动上限为总图片数)
    • 点击"自动分组"智能分配
    • 或手动拖拽调整分组
  3. ⚙️ 参数设置

    • 选择输出目录保存结果
    • 确认分组无误
  4. 🚀 开始处理

    • 点击"开始拼图"
    • 实时查看处理进度
    • 完成后自动打开输出目录

支持的图片格式

  • JPEG/JPG - 最常用的照片格式
  • PNG - 支持透明背景
  • BMP - Windows位图
  • TIFF - 高质量图像
  • WebP - Google现代格式

🎨 界面功能详解

主界面布局

左侧区域 - 分组管理

  • 📊 分组控制:设置每组图片数量(2-总图片数)
  • 🗂️ 分组显示:可视化查看所有分组
  • 📋 未分组图片:待分配的图片池
  • 🎯 自动分组:一键智能分组

右侧区域 - 处理控制

  • 📁 目录选择:输入/输出目录选择
  • 📥 拖拽区域:支持文件/文件夹拖拽
  • 📝 实时日志:处理进度和详细信息
  • 🔄 进度条:可视化处理进度
  • 🎛️ 控制按钮:开始/停止/清理

特色功能

🎯 智能上限设置

  • 自动根据图片总数设置合理的分组上限
  • 防止设置超出实际图片数量的无效值
  • 实时调整,确保操作合理性

🎨 拖拽操作

  • 支持图片在分组间自由拖拽
  • 支持从外部拖拽文件/文件夹
  • 直观的视觉反馈

📊 实时反馈

  • 图片数量实时统计
  • 处理进度百分比显示
  • 详细的操作日志

🔢 组内排序

  • 按名称排序:按文件名升序排列
  • 按大小排序:按文件大小降序排列(大文件在前)
  • 按时间排序:按修改时间降序排列(新文件在前)
  • 一键操作:每个分组独立排序,互不影响

📁 项目结构

MomentStitcher/
├── gui_stitcher.py      # 🎨 图形界面主程序
├── image_stitcher.py   # ⚙️ 命令行版本(兼容)
├── clean_folders.py    # 🧹 清理工具
├── requirements.txt    # 📦 依赖列表
├── README.md          # 📖 说明文档
├── input/             # 📥 默认输入目录
│   └── .gitkeep
├── output/            # 📤 默认输出目录
│   └── .gitkeep
└── README.md          # 📖 项目文档

🔧 技术规格

系统要求

  • Python: 3.6 或更高版本
  • 操作系统: Windows/macOS/Linux
  • 内存: 建议4GB以上(处理大量图片)

核心算法

📐 智能宽度适配

  1. 宽度检测:扫描所有图片,找到最短横边
  2. 等比例缩放:所有图片按相同比例缩放至基准宽度
  3. 质量保持:使用Lanczos算法确保最佳质量

🧮 分组算法

  • 智能分配:根据图片总数和设定数量自动分组
  • 边界处理:最后一组自动处理剩余图片
  • 灵活调整:支持手动拖拽重新分组

💾 内存优化

  • 流式处理:逐张处理,避免内存溢出
  • 缓存机制:缩略图缓存,提升响应速度
  • 后台线程:使用QThread保持界面流畅

🎯 使用场景

📱 社交媒体分享

  • 朋友圈长图:将多张截图拼接成长图
  • 微博长图:制作适合微博的长图内容
  • Instagram Story:创建连续的故事长图

📊 工作汇报

  • 项目截图:将多个界面截图拼接展示
  • 数据对比:并排展示多张图表
  • 流程演示:步骤截图的连续展示

📸 生活记录

  • 旅行照片:将多张照片拼接成游记
  • 美食记录:餐厅菜品合集
  • 活动回顾:活动精彩瞬间合集

🛠️ 高级功能

🎨 自定义设置

# 在gui_stitcher.py中可调整
DEFAULT_GROUP_SIZE = 9      # 默认每组图片数
OUTPUT_QUALITY = 95         # 输出图片质量
THUMBNAIL_SIZE = 60         # 缩略图尺寸

🔍 批量处理模式

支持通过命令行参数进行批量处理(适合自动化脚本):

# 命令行模式
python image_stitcher.py
# 按提示输入参数即可

🧹 维护工具

# 清理输入目录
python clean_folders.py
# 清理输出目录
python clean_folders.py

❓ 常见问题解答

🔧 技术问题

Q: 程序无法启动

  • ✅ 检查Python版本:python --version(需3.6+)
  • ✅ 安装依赖:pip install -r requirements.txt
  • ✅ 检查系统权限

Q: 图片处理失败

  • ✅ 确认图片格式是否支持
  • ✅ 检查图片是否损坏
  • ✅ 确认磁盘空间充足

Q: 内存不足

  • ✅ 减少每组图片数量
  • ✅ 分批处理大量图片
  • ✅ 关闭其他占用内存的程序

Q: 输出质量不佳

  • ✅ 检查原图质量
  • ✅ 确认输出目录权限
  • ✅ 查看日志获取详细信息

🎯 使用技巧

最佳实践

  • 建议每组8-12张图片,平衡文件大小和视觉效果
  • 使用相同尺寸的图片可获得最佳效果
  • 定期清理输出目录,避免文件堆积

性能优化

  • 处理大量图片时,建议分批进行
  • 使用SSD硬盘可显著提升处理速度
  • 关闭不必要的后台程序

📈 版本历史

🆕 v2.2.1 (MomentStitcher)

  • ⏱️ 进度条显示:增加进度条显示,可视化处理进度
  • 📝 日志增强:增加了更详细的日志记录
  • 🐛 稳定性提升:修复排序功能的稳定性问题

v2.2.0 (MomentStitcher)

  • 🎯 多列布局:分组区域改为智能网格布局,支持2-4列动态调整
  • 📏 尺寸优化:优化各区域尺寸比例,未分组区域更紧凑
  • 📝 日志固定:日志窗口改为固定高度,便于查看处理进度
  • 🔄 版本管理:添加应用程序版本标识

v2.1.0 (MomentStitcher)

  • ✨ 重命名为MomentStitcher,更贴合朋友圈使用场景
  • 🎯 智能上限:自动设置合理的分组数量上限
  • 🎨 界面优化:改进的视觉设计和用户体验
  • 📱 社交优化:专为朋友圈分享优化

v2.0.0

  • 🎨 图形界面:全新PyQt5界面
  • 📁 拖拽支持:文件/文件夹拖拽
  • 📊 实时日志:处理进度可视化
  • 🧹 清理工具:一键清理功能

v1.0.0

  • ⚙️ 基础功能:核心拼图算法
  • 📏 宽度适配:智能宽度统一
  • 📦 批量处理:支持大量图片
  • 💻 命令行:交互式操作

🤝 参与贡献

欢迎提交Issue和Pull Request来改进MomentStitcher!

📝 报告问题

  • 提供详细的错误信息
  • 附上相关图片样本(如可能)
  • 说明操作步骤和期望结果

🔧 功能建议

  • 描述具体的使用场景
  • 提供界面设计建议
  • 说明预期效果

📄 许可证

本项目采用MIT许可证,详见LICENSE文件。

🙏 致谢

感谢所有为MomentStitcher提供反馈和建议的用户!


让每一刻都值得分享 - MomentStitcher ❤️

About

一个朋友圈拼图小程序

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages