一个基于 Flask + PostgreSQL 的随机图片 API,专用于将云存储(OSS、图床等)图片链接添加到数据库,并提供随机图片接口,可根据终端类型(desktop / mobile)返回不同大小的图片链接。 可用于壁纸 API、图床图片随机展示等场景。
- /add → 添加图片(POST)
- /delete → 删除图片(POST)
- /list → 获取所有图片信息(POST)
- /random-image → 获取随机图片链接并跳转(GET)
- 通过 images_batch.py 和公网ip可以实现远程批量操作。
git clone https://github.com/huanghunr/CloudImageAPI.git
cd CloudImageAPI请在 dockerfile 文件中,修改你的数据库密钥和安全密钥。 默认为
DB_PASS=img_user@SQL123 #数据库密钥
API_TOKEN=default_token@add_images123 #验证token
dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt &&\
apt-get update && \
apt-get install -y postgresql postgresql-contrib && \
rm -rf /var/lib/apt/lists/*
COPY init.sql /init.sql
COPY app.py /app/app.py
COPY init.sh /init.sh
# 设置环境变量
ENV DB_HOST=127.0.0.1
ENV DB_PORT=5432
# 你的数据库名称、用户名,默认即可
ENV DB_NAME=image_api
ENV DB_USER=img_user
# 你的数据库密码,尽量使用更复杂的密码
ENV DB_PASS=img_user@SQL123
# 你的安全密钥,用于添加图片/删除图片/列出图片的验证
ENV API_TOKEN=default_token@add_images123
EXPOSE 5000
RUN chmod +x /init.sh
CMD ["/init.sh"]
请在 app.py 文件中,添加受信任的图片链接。
# 受信任的图片链接
ALLOWED_DOMAINS = ["static.example.com"]
docker build --pull --rm -f 'dockerfile' -t 'cloudimageapi:latest' '.'
docker run --rm -d -p 5000:5000/tcp cloudimageapi:latest -
接口:
/add -
方法:
POST -
参数:
参数名 必填 说明 token ✅ API 安全密钥 url ✅ 图片链接 type ❌ 图片类型( android或desktop,默认desktop) -
示例:
curl -X POST http://127.0.0.1:5000/add \
-F "token=你的安全密钥" \
-F "url=https://example.com/image.jpg" \
-F "type=desktop"- 返回:
{
"message": "添加成功",
"url": "https://example.com/image.jpg",
"type": "desktop"
}-
接口:
/delete -
方法:
POST -
参数:
参数名 必填 说明 token ✅ API 安全密钥 id ❌ 图片 ID(与 url 二选一) url ❌ 图片 URL(与 id 二选一) -
示例(按 ID 删除):
curl -X POST http://127.0.0.1:5000/delete \
-F "token=你的安全密钥" \
-F "id=3"- 示例(按 URL 删除):
curl -X POST http://127.0.0.1:5000/delete \
-F "token=你的安全密钥" \
-F "url=https://example.com/image.jpg"- 返回:
{
"message": "删除成功",
"deleted_count": 1
}-
接口:
/list -
方法:
POST -
参数:
参数名 必填 说明 token ✅ API 安全密钥 page ❌ 当前的页面数(默认1) per_page ❌ 页面最大显示数量(默认20) -
示例:
curl -X POST http://127.0.0.1:5000/list \
-F "token=你的安全密钥" \
-F "page = 当前页" \
-F "per_page = 页面最大显示数量"- 返回:
{
"count": 3,
"images": [
{"id": 1, "url": "https://example.com/a.jpg", "type": "desktop"},
{"id": 2, "url": "https://example.com/b.jpg", "type": "android"},
{"id": 3, "url": "https://example.com/c.jpg", "type": "desktop"}
]
}-
接口:
/random-image -
方法:
GET -
参数:
参数名 必填 说明 type ❌ 图片类型( android或desktop,默认desktop) -
示例:
curl "http://127.0.0.1:5000/random-image?type=desktop"-
返回:
- 直接 302 重定向 到随机图片 URL
通过在本地运行python脚本合公网ip对远程服务器的图片链接进行批量操作。
以下操作在本地执行。 1.安装依赖
pip install requests
2.把 images_batch.py 文件下载或复制到本地。
3.按照需要修改images_batch.py脚本内容。
4.运行
python images_batch.py