做博客、做产品官网,或者只是想给自己图库加一层压缩,传统做法要么开台服务器跑压缩脚本,要么用第三方图床(隐私和费用都是问题)。
如果你只是想要一个「改一下图片 URL 就能实时压缩 / 缩放 / 转格式」的工具,其实完全不用买服务器——把开源项目 EdgeImg 部署到 Cloudflare 或 EdgeOne 的边缘函数上就行:免费额度够个人用,零运维,URL 本身就是 API。
一、它到底是什么
EdgeImg 是一个类 Cloudflare Images 的按需图片变换服务。你不用把图片上传到任何平台,只要把图放到它指定的目录(或任意公网可访问地址),然后通过改写 URL 参数就能实时拿到压缩 / 缩放 / 转格式后的图,结果还会被边缘节点缓存。
它只有一种形态:纯 API + 极简说明页。也就是说,它不是一个「网页里拖拽图片压缩」的面板,而是一个部署在你自己域名下的 HTTP 接口——浏览器打开根域名会看到一个自动列出用法的说明页,但真正的用法,是把接口塞进 <img src> 或你自己的脚本里。
为什么强调「纯 API」?因为很多人一听到「图片压缩工具」就以为是网页拖拽面板。EdgeImg 故意去掉了前端 UI,只留接口:这样最轻、最稳、最好嵌。
核心就一句:图片地址 + 参数 = 变换后的图片。
# 把 sample.png 缩到宽 400、质量 70、转 webphttps://你的域名/image/width=400,quality=70,format=webp/sample.png说明页上的示例链接是相对路径,打开后会自动套用你当前的域名,所以你不用手动替换——这也是为什么下面测试时直接点链接就能看到效果。
二、EdgeOne Makers 一键部署(最省事)
EdgeOne 是腾讯云的边缘函数平台,对国内访问和备案更友好,而且官方提供一键部署按钮,点一下就完事。
打开 GitHub 项目主页,点击 README 里的 Deploy to EdgeOne Makers 按钮:
会自动跳转到腾讯云 EdgeOne 控制台,点击「立即创建」:
稍等片刻,部署成功:
绑定自定义域名(可选但推荐)
进入「域名管理」,添加自定义域名:
输入你自己的域名:
控制台会给你一条 CNAME 记录,把它加到你域名服务商(如阿里云、DNSPod、Cloudflare 等)的解析里即可。
随后配置 HTTPS。点击 HTTPS 配置按钮,选择「边缘 HTTPS 证书」:
选择申请免费证书,自动验证,保持即可(腾讯云会送一张边缘证书,HTTPS 自动生效,无需自己买)。
环境变量
ALLOWED_URL_HOSTS:EdgeOne 部署时会让你填这个变量。它限制「通过?url=抓取公网图片」时允许的来源域名。留空 = 不限制(任何公网图都能转);填了就只放行名单内域名(逗号分隔,如cdn.example.com,images.example.com)。如果你只用自带图库(/image/<参数>/<文件名>),这个变量留空也没关系。
三、Cloudflare Pages 手动部署
⚠️ 注意:Cloudflare 已经取消了一键部署按钮——现在那个按钮只能部署 Worker,还会强制把仓库 fork 到你账号,跟本项目的 Pages 形态不兼容。所以 Cloudflare 这边走手动连接 Git,步骤也不多。
先在 GitHub 把项目 fork 到自己的账号:
在 Cloudflare 打开 Workers & Pages,点击「创建应用程序」:
选择「部署 Pages」:
选择「导入现有 Git 存储库」:
选刚刚 fork 的项目:
构建命令填 npm run build,构建输出位置填 build:
点击「保存并部署」,等所有步骤显示 ✅ 即可:
点左上角返回,进入「自定义域名」:
设置一个自定义域名(前提是这个域名已经在 Cloudflare 托管):
到此部署成功。
环境变量
ALLOWED_URL_HOSTS:在 Cloudflare 控制台 → 你的 Pages 项目 → Settings → Environment variables 里添加。作用同上:留空 = 不限制?url=远程抓取;填值 = 只允许名单内域名。
四、两种平台怎么选
| 维度 | EdgeOne Makers | Cloudflare Pages |
|---|---|---|
| 部署方式 | 一键按钮 | 手动连接 Git |
| 底层引擎 | sharp(libvips) | Cloudflare 原生图片缩放 |
| 国内访问 | 友好(腾讯云节点) | 一般(看区域) |
| 自定义域名 + 证书 | 控制台一键申请免费证书 | 需域名托管在 Cloudflare |
| 免费额度 | 个人够用 | 个人够用 |
| 适合谁 | 国内用户、要中文控制台 | 已有 Cloudflare 账号、海外流量 |
两者 API 完全一致,随时可以换平台,代码一行都不用改。
五、实战测试:1.5 MB → 87 KB
部署完,直接拿项目自带的示例图测一下。
先打开原始图片链接,下载下来看体积:
再打开「自动转换链接」——也就是在 URL 里加上 format=auto 参数:
下载转换后的图,查看大小:87.1 KB。
原始图多大?1.5 MB。
从 1.5 MB 压到 87 KB,体积只剩约 6%,而且肉眼看画质并没有明显模糊——在保证观感的前提下大幅减少体积,对网页加载速度提升非常明显。
# 原始图(1.5 MB)https://你的域名/images/sample.png
# 变换后(87 KB)https://你的域名/image/width=800,quality=70,format=webp/sample.png六、更多 API 玩法
「URL 即 API」意味着所有变换都写在路径里,逗号分隔:
GET /image/<选项>/<路径> # 转换自带图库里的图(images/ 下)GET /image/<选项>?url=<公网图> # 转换任意公网图片常用参数:
| 参数 | 作用 | 示例 |
|---|---|---|
width / height | 目标宽高(px),只写一边则等比缩放 | width=400 |
quality | 有损压缩质量 1–100 | quality=70 |
format | 输出格式:webp / avif / jpeg / png(省略则按浏览器自动协商) | format=webp |
fit | 填充方式:cover / contain / scale-down 等 | fit=cover |
fit=cover + width + height | 裁出固定尺寸缩略图 | width=200,height=200,fit=cover |
?url= | 直接转换公网图片 | ?url=https://cdn.example.com/a.png |
几个实用例子:
# 1) 生成固定 200x200 头像缩略图(居中裁剪)https://你的域名/image/width=200,height=200,fit=cover,format=webp/sample.png
# 2) 把一张公网图转成 avif(体积最小)https://你的域名/image/width=1200,format=avif?url=https://cdn.example.com/photo.jpg
# 3) 响应式图片:交给浏览器自动选格式(Accept 头协商)https://你的域名/image/width=800,quality=75/sample.png甚至可以直接塞进 HTML,做响应式图片:
<img src="https://你的域名/image/width=800,quality=75,format=webp/sample.png" srcset="https://你的域名/image/width=400,format=webp/sample.png 400w, https://你的域名/image/width=800,format=webp/sample.png 800w, https://你的域名/image/width=1600,format=webp/sample.png 1600w" alt="示例图" loading="lazy">七、适合用在哪
- 博客 / 官网配图:写完文章直接贴原始图,用 URL 参数实时压成 webp,加载飞快。
- 图床增强:给自己网盘 / 图床加一层实时变换,要缩略图、要转格式都不用预先处理。
- 响应式前端:配合
srcset按设备给不同尺寸,省流量。 - 批量历史图优化:老图库不用一张张重压,访问时按需转换并缓存。
最关键的收益:不再需要打开网页一个个手动拖拽图片去压缩下载,所有压缩都在请求时自动完成,省一大笔时间。
八、小结与安全
- EdgeImg 部署在你自己的域名下,图片不经过任何第三方图床,隐私可控。
- 自带 SSRF 防护:
?url=只允许 http/https,会拦截localhost、内网地址,避免被人拿来打内网。 ?url=还能用ALLOWED_URL_HOSTS进一步锁死只允许指定图床,防止被当公开代理滥用。- 变换结果带长缓存头,边缘节点命中后几乎零计算。
一句话总结:不买服务器、不跑后端、不改代码,点几下(EdgeOne)或连一下 Git(Cloudflare),你就拥有了一个属于自己的、URL 即服务的图片转换平台。
项目地址:EdgeImg
如果内容对你有帮助,欢迎用微信或支付宝请我喝杯咖啡 ☕


评论
评论将由 AI 自动审核;需要人工确认的内容会在审核通过后显示。
正在加载评论……