Skip to content

3vilive/optimize-images-http

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Optimize Images HTTP

基于 optimize-images 的 HTTP 服务,用于优化图片。

功能特性

  • ✅ 支持多种图片格式(JPEG, PNG, WebP, GIF)
  • ✅ 自动图片优化,减小文件大小
  • ✅ 异步处理,高性能
  • ✅ 自动生成 API 文档(Swagger UI)
  • ✅ 类型安全,参数验证
  • ✅ 错误处理和日志记录

快速开始

安装依赖

pip install -r requirements.txt

运行服务

# 激活虚拟环境(如果使用虚拟环境)
source venv/bin/activate  # Linux/Mac
#
venv\Scripts\activate  # Windows

# 开发模式(支持热重载)
# 确保在项目根目录运行
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# 生产模式
uvicorn app.main:app --host 0.0.0.0 --port 8000

# 或者使用 Python 模块方式运行(推荐)
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

服务启动后,访问以下地址:

API 使用

POST /optimize

优化上传的图片文件。

请求示例

使用 curl:

curl -X POST "http://localhost:8000/optimize" \
  -F "image=@/path/to/your/image.jpg" \
  --output optimized_image.jpg

使用 Python requests:

import requests

url = "http://localhost:8000/optimize"
files = {"image": open("image.jpg", "rb")}
response = requests.post(url, files=files)

if response.status_code == 200:
    with open("optimized_image.jpg", "wb") as f:
        f.write(response.content)
    print("图片优化成功!")

使用 JavaScript fetch:

const formData = new FormData();
formData.append('image', fileInput.files[0]);

fetch('http://localhost:8000/optimize', {
  method: 'POST',
  body: formData
})
.then(response => {
  if (!response.ok) throw new Error('优化失败');
  return response.blob();
})
.then(blob => {
  const url = URL.createObjectURL(blob);
  // 使用优化后的图片
  const img = document.createElement('img');
  img.src = url;
  document.body.appendChild(img);
});

响应

  • 成功 (200): 返回优化后的图片二进制数据
  • 错误 (400): 请求参数错误(如文件过大)
  • 错误 (422): 文件格式不支持
  • 错误 (500): 服务器内部错误

项目结构

optimize-images-http/
├── app/
│   ├── __init__.py
│   ├── main.py          # FastAPI 应用入口
│   └── optimize.py      # 图片优化逻辑
├── requirements.txt     # 项目依赖
├── README.md           # 项目说明
└── optimize-images-http.md  # 详细文档

技术栈

  • FastAPI: 现代、快速的 Web 框架
  • Uvicorn: ASGI 服务器
  • optimize-images: 图片优化库
  • Pillow: 图片处理库

限制

  • 最大文件大小: 30MB
  • 支持的格式: JPEG, PNG, WebP, GIF

开发

代码结构

  • app/main.py: FastAPI 应用主文件,定义路由和请求处理
  • app/optimize.py: 图片优化逻辑,封装 optimize-images 库

添加新功能

  1. app/optimize.py 中添加优化逻辑
  2. app/main.py 中添加新的路由端点
  3. 更新文档

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published