图片水印裁剪缩略接口:电商商品图批量水印+缩略一体化方案
# 图片水印裁剪缩略接口:电商商品图批量水印+缩略一体化方案
> 接口/接入点:图片水印裁剪缩略接口(apiCode=1)· 1-1/1-2(或 base64 版 1-3/1-5) · 是否免费:免费(有档位限制) · 请求方式:POST/GET · 返回格式:JSON · 适用人群:电商运营、全栈 · 阅读时间:8 分钟
## 核心要点
- 商品原图 → 统一水印(1-2/1-3)+ 多尺寸缩略(1-1/1-5)→ 批量出图并防滥用。
- 免费档位下批量必须限流,用[频率控制篇](https://www.showapi.com/guides/image-process-ratelimit-1)的令牌桶 + 缓存 + 退避。
- 大批量建议走任务队列(见[并发架构篇](https://www.showapi.com/guides/image-process-concurrency-1)),别同步串行。
## Why:电商为什么需要它
商品图既要防盗(打水印),又要在列表/详情用不同尺寸(缩略)。手动 PS 几千张不现实。用接口批量处理,水印位置统一、尺寸标准,运营一次配置长期受益。
## What:选用接入点
| 步骤 | 接入点 | 入参 |
|------|------|------|
| 加水印 | 1-2(文件)/ 1-3(base64) | `src_img`+`logo_img` / base64 版 |
| 生成缩略 | 1-1(文件)/ 1-5(base64) | `type`+`rate`/`size` |
## How:批量处理骨架
**Python:循环 + 限流 + 落库**
```python
import requests, time, os
WATERMARK = open("shop_logo.png", "rb").read() # 店铺水印图,统一
def process_one(path):
# 1) 加水印(base64 版 1-3,避免重复读文件)
import base64
b64 = base64.b64encode(open(path,"rb").read()).decode()
logo = base64.b64encode(WATERMARK).decode()
r1 = requests.post("https://route.showapi.com/1-3", params={"appKey":"YOUR_APPKEY"},
data={"src_img_base64":b64,"logo_img_base64":logo,"position":"SouthEast","xy":"+5+10"}, timeout=10)
wm = r1.json()["showapi_res_body"]
if str(wm.get("ret_code")) != "0":
return None
# 2) 对水印图再生成缩略(1-5)
r2 = requests.post("https://route.showapi.com/1-5", params={"appKey":"YOUR_APPKEY"},
data={"type":"rate","rate":"0.6","src_img_base64":b64}, timeout=10) # 示例:实际应取上一步结果图
return r2.json()["showapi_res_body"].get("des_pic_url")
for f in os.listdir("goods"):
if f.lower().endswith((".jpg",".png")):
process_one(os.path.join("goods", f))
time.sleep(0.5) # 简易节流,生产用令牌桶
```
**cURL(单张水印)**
```bash
curl -X POST "https://route.showapi.com/1-2?appKey=YOUR_APPKEY" \
-F "position=SouthEast" -F "xy=+5+10" \
-F "src_img=@goods/1.jpg" -F "logo_img=@shop_logo.png"
```
## 返回示例
```json
{ "showapi_res_body": { "ret_code": "0", "des_pic_url": "http://img.showapi.com/1.jpg" } }
```
## 进阶/边界
- 水印图建议透明 PNG;`position` 默认右下角,店铺统一即可。
- 批量务必节流 + 失败退避,否则触发免费档位限制(见[频率控制篇](https://www.showapi.com/guides/image-process-ratelimit-1))。
- `des_pic_url` 临时的,批量产出后建议下载归档到商品图存储。
## FAQ
**Q1:水印和缩略能一次完成吗?** 接口分接入点,需先水印再缩略(两步),或按需只做其一。
**Q2:几千张会限流吗?** 会,用任务队列 + 令牌桶分批,别同步循环猛打。
**Q3:水印图每次都要传?** base64 版可把店铺水印图读一次复用;文件版每次随表单带。
**Q4:想要不同尺寸?** 对每个结果图再调 1-1/1-5 生成多尺寸,参数存缓存 key。
## 相关能力 / 下一步阅读
- [图片水印裁剪缩略接口实战:水印 position 九宫格与 xy 偏移怎么设](https://www.showapi.com/guides/watermark-position-guide-1)
- [图片水印裁剪缩略接口:免费档位限制与频率控制,如何避免触发限流](https://www.showapi.com/guides/image-process-ratelimit-1)
- **本系列共 13 篇**:查看[图片水印裁剪缩略接口指南总目录](https://www.showapi.com/guides/image-process-guides-1)