Spaces:
Running
Running
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 提供质量参数,并启用优化/渐进编码。
- 加载图片后进行 EXIF 自动旋转(
- 性能与内存:
- 以内存流创建 ZIP(
io.BytesIO+zipfile),避免落盘 I/O。 - 限制上传大小为 16MB(
MAX_CONTENT_LENGTH),减轻服务端压力。
- 以内存流创建 ZIP(
- 安全与隐私:
- 无状态、即处理即返回,不持久化用户文件。
- Docker 镜像内使用非 root 用户(uid 1000)。
- 可扩展性:
- 前后端参数映射清晰,易于扩展更多布局或特效(如切片边框、留白)。
本地运行
- 克隆仓库
- 安装依赖:
pip install -r requirements.txt - 运行:
python app.py - 访问:
http://localhost:7860
部署到 Hugging Face Spaces
本项目已配置 Dockerfile,可直接部署到 Hugging Face Spaces。 请确保 Space 的 SDK 设为 Docker,端口设为 7860。