配置教程
在 Mac 上把图片压缩后直传腾讯云 COS
许多站长和开发者选择腾讯云 COS 作为图片底座。结合腾讯云全球加速与高性价比存储,配合 Mac 本地优先的 TinyOwl 图像工作流,能在图片上传前自动完成高倍率 WebP 压缩,节省带宽与存储空间。
版本说明:本文基于 TinyOwl v0.7.2(macOS 12+,仅支持 Apple 芯片 Mac)撰写。
为什么要在上传腾讯云 COS 前在本地压缩?
腾讯云对象存储(Cloud Object Storage,COS)生态中提供了 数据万象 CI 的图片瘦身和转码方案,支持在访问时动态处理图片。
但对于桌面端的独立开发者、内容作者和自媒体来说,在本地完成预先压缩具备极其清晰的收益:
- 规避上行流量拥堵:Mac 截取的视网膜高分屏图片通常高达数兆,尤其在家庭宽带或手机热点等上行速率受限的网络环境下,原图直传会有明显的卡顿等待感。在本地先经 TinyOwl 转为 WebP Q75,体积通常缩小 80%~90%,上行传输耗时成倍减少。
- 降低云端存储与处理成本:腾讯云数据万象等云端处理方案是按次按量计费的;如果原图体积巨大,不仅占用昂贵的标准存储容量,持续的处理费用也会随访问量累积。
- 断网与纯离线可用:TinyOwl 的压缩和格式转换完全在 Mac 本机 Apple 芯片中运行,即便在无网络或离线环境中也能顺畅整理图片,待网络通畅后再统一上传。
第一步:准备腾讯云 COS 存储桶与 CAM 凭证
与所有云服务相同,强烈反对使用腾讯云主账号 API 密钥。建议在访问管理(CAM)控制台创建权限受限的子账号。
1. 创建 COS 存储桶(Bucket)
- 登录 腾讯云 COS 控制台。
- 在左侧菜单点击 存储桶列表,点击 创建存储桶。
- 输入名称(例如
myassets)。注意:腾讯云会自动在名称后拼接你的专属 APPID,最终完整的 Bucket 名称形如myassets-1250000000。 - 选择所属地域(Region),例如 广州(对应地域代号为
ap-guangzhou)或 上海(对应ap-shanghai)。 - 访问权限:
- 作为公共图床或博客引用,选择 公有读私有写。
- 点击 确定 完成创建。
2. 创建 CAM 访问密钥(SecretId / SecretKey)
- 访问 腾讯云 CAM 控制台 - 用户列表。
- 点击 新建用户 ➔ 自定义创建 ➔ 选择 可访问资源并接收消息。
- 填写用户名(如
tinyowl-cos-uploader),访问方式勾选 编程访问。 - 配置权限策略:
- 快速方案:关联策略
QcloudCOSFullAccess(对象存储全读写访问权限)。 - 严格方案:自定义权限策略,仅授权目标 Bucket 的
PutObject、GetObject和ListBucket权限。
- 快速方案:关联策略
- 完成创建后,保存生成的 SecretId 与 SecretKey(SecretKey 仅在创建成功时展示一次)。
3. 获取地域 Endpoint
腾讯云 COS 的标准 S3/REST 访问 Endpoint 格式非常规则:
- 上海:Region 为
ap-shanghai,Endpoint 为https://cos.ap-shanghai.myqcloud.com - 广州:Region 为
ap-guangzhou,Endpoint 为https://cos.ap-guangzhou.myqcloud.com - 北京:Region 为
ap-beijing,Endpoint 为https://cos.ap-beijing.myqcloud.com
官方完整地域列表可查阅 腾讯云 COS 地域和访问域名。
第二步:在 TinyOwl 中添加腾讯云 COS 上传目标
- 打开 TinyOwl,按快捷键
⌘,打开 设置。 - 在左侧导航栏点击 上传目标,再点击右上角的 添加上传目标。
- 在类型下拉菜单中,选择 Tencent COS。
- 填写相关参数:
- 名称:如
腾讯云上海 COS。 - Bucket:注意必须包含 APPID 后缀,例如
myassets-1250000000。 - Region:填写地域代码,如
ap-shanghai。 - Endpoint:填写完整的 HTTPS 地址,例如
https://cos.ap-shanghai.myqcloud.com。 - Access Key ID:填入腾讯云的 SecretId。
- Secret Access Key:填入腾讯云的 SecretKey。
- Public Base URL(可选但推荐):如果存储桶为公有读,可填入存储桶的访问地址。默认地址形如
https://myassets-1250000000.cos.ap-shanghai.myqcloud.com;若配置了解析域名,填入https://img.yourdomain.com。 - Path Prefix(可选):统一存放目录,例如
blog/upload。
- 名称:如
- 点击卡片底部的 测试连接。
- 测试成功后,该目标即可用于任意工作流。
第三步:将 COS 上传加入工作流
- 在设置中点击 工作流。
- 点击 添加工作流,命名为
博客配图 -> WebP -> 腾讯云COS。 - 配置处理步骤:
- 尺寸处理(可选):如果经常处理 4K 或双倍屏 Retina 截图,可增加最长边 1600px 预设,保持图片清晰的同时严格限制物理分辨率。
- 压缩(必需):选择内置预设 WebP - 另存为 或自定义参数为 均衡 Q75。
- 上传(必需):选择刚刚添加的
腾讯云上海 COS,路径模板可采用{yyyy}/{mm}/{dd},文件名策略推荐使用timestamped(时间戳模式),防止同名冲突。
- 点击 启用此工作流。
进阶:配置腾讯云 CDN 加速与防盗链
在实际生产部署中,直接暴露默认 COS 域名容易产生未经授权的高额盗刷。建议配置以下安全措施:
- 开启 CDN 加速:在 COS 控制台进入存储桶的 域名与传输管理 ➔ 自定义源站域名,绑定你的独立域名并一键开通腾讯云 CDN。
- 配置 Referer 防盗链:在 安全管理 ➔ 防盗链设置 中,将防盗链规则设为白名单,填入你的博客或官网域名(如
*.yourdomain.com),拦截外部站点的恶意直接引用。 - 更新 TinyOwl Public Base URL:将 TinyOwl 中该目标的 Public Base URL 更新为你绑定的 CDN 独立域名(例如
https://static.yourdomain.com)。
常见错误排查与解决方案
| 现象 / 报错 | 根本原因 | 解决方法 |
|---|---|---|
| ”NoSuchBucket” (404 错误) | Bucket 名称未包含 APPID | 腾讯云 COS 的 Bucket 名称在 API 层面必须带上 -APPID(如 test-1250000000),请检查并补齐 APPID 后缀。 |
| “AccessDenied” (403 错误) | SecretId/Key 错误或 CAM 权限不足 | 检查 CAM 子用户是否具备该 Bucket 的写入权限,并确认 SecretId 和 SecretKey 是否完整、未混入换行或空格。 |
| 连接超时或 SSL 握手失败 | Endpoint 格式错误 | 确认 Endpoint 为 https://cos.<Region>.myqcloud.com 格式,切勿填错地域代号(如把 ap-guangzhou 误拼为 cn-south)。 |
| 图片上传成功但无法在浏览器查看 | 存储桶权限为「私有读写」 | 在 COS 控制台的基本配置中,将访问权限由「私有读写」调整为「公有读私有写」,或配合腾讯云 CDN 鉴权访问。 |
| 复制出的链接无法点击或格式错乱 | Public Base URL 填写了尾部斜杠 | 检查 TinyOwl 设置中的 Public Base URL,确保格式形如 https://cdn.example.com(末尾不包含 /)。 |
借助 TinyOwl 的原生 ARM64 Rust 引擎,把高负荷的图像重采样与 WebP 编码留在本地,将极小体积的文件精准同步到腾讯云 COS,打造出极速且经济的高效工作流。