grid-image-splitter / README.md
duqing2026's picture
适配 hf
f0089de
metadata
title: Grid Image Splitter
emoji: 🌍
colorFrom: gray
colorTo: red
sdk: docker
pinned: false
license: mit
short_description: 九宫格切图神器

Grid Image Splitter (九宫格切图神器)

这是一个简单而强大的在线工具,可以帮助你将一张图片切割成九宫格(或其他网格布局),方便发布到朋友圈、小红书、Instagram 等社交平台。

功能特点

  • 多种布局:支持 3x3 (九宫格), 2x2, 3x1, 1x3, 3x2, 2x3 等。
  • 高清无损:后端采用 Python Pillow 库处理,保持原始图片画质。
  • 一键打包:自动将切割后的图片打包成 ZIP 下载。
  • 隐私安全:图片处理后立即释放,不保存任何用户数据。
  • 实时预览:上传即可预览切割效果。
  • 高级设置:支持正方形裁剪、统一切片尺寸、输出格式(PNG/JPEG/WEBP)、质量调节。

技术栈

  • 后端: Flask, Pillow (Python Imaging Library)
  • 前端: Vue 3, Tailwind CSS
  • 部署: Docker, Hugging Face Spaces

架构与技术实现(面试解读)

  • 整体架构
    • 前端使用 Vue 3 组合式 API 管理状态与交互,Tailwind 构建响应式 UI。
    • 后端 Flask 暴露两个路由:/ 渲染页面;/api/split 处理图片并返回 ZIP。
    • Docker 化部署到 Hugging Face Spaces,使用 gunicorn 作为生产 WSGI。
  • 核心算法
    • 加载图片后进行 EXIF 自动旋转(ImageOps.exif_transpose)确保方向正确。
    • 可选正方形中心裁剪,提升社交平台九宫格适配性。
    • 两种切分策略:
      • 非严格模式:最后一行/列吸收余数像素,避免丢失信息;
      • 严格模式:居中裁剪为网格整倍数,保证所有切片尺寸完全一致。
    • 输出支持 PNG/JPEG/WEBP,JPEG/WEBP 提供质量参数,并启用优化/渐进编码。
  • 性能与内存
    • 以内存流创建 ZIP(io.BytesIO + zipfile),避免落盘 I/O。
    • 限制上传大小为 16MB(MAX_CONTENT_LENGTH),减轻服务端压力。
  • 安全与隐私
    • 无状态、即处理即返回,不持久化用户文件。
    • Docker 镜像内使用非 root 用户(uid 1000)。
  • 可扩展性
    • 前后端参数映射清晰,易于扩展更多布局或特效(如切片边框、留白)。

本地运行

  1. 克隆仓库
  2. 安装依赖: pip install -r requirements.txt
  3. 运行: python app.py
  4. 访问: http://localhost:7860

部署到 Hugging Face Spaces

本项目已配置 Dockerfile,可直接部署到 Hugging Face Spaces。 请确保 Space 的 SDK 设为 Docker,端口设为 7860