H5微博不支持长图上传,仅限单张、宽高比固定、最大边≤4096px、大小≤5MB;微博App可识别高度≥宽度×3的RGB模式JPG/PNG长图并启用上下滑动浏览,需本地拼接且宽度为720/750px、高度≤20000px。

微博 HTML5 版本不支持直接上传长图,也没有内置的长图拼接入口——这是当前(2024 年)官方明确限制的行为。
为什么 H5 微博不能发长图
微博移动端 Web 端(即 m.weibo.cn)默认使用 input[type="file"] 调起系统相册/文件选择器,但仅接受单张图片,且会强制压缩、裁切或拒绝超尺寸图像。服务器侧对 pic 字段的校验逻辑只允许单图、固定宽高比(如 16:9、1:1)、最大边≤4096px,且总文件大小通常限制在 5MB 以内。
长图(如 720×10000px)会被前端 JS 拦截,或上传后返回错误:{"code":100003,"msg":"图片格式或大小不支持"}。
替代方案:用「微博客户端」+「长图识别机制」绕过限制
微博 App(iOS/Android)虽未开放显式“长图拼接”按钮,但具备隐式识别能力:只要上传的图片高度 ≥ 宽度 × 3,且为 JPG/PNG、无 EXIF 异常、无透明通道(PNG 需为 RGB 模式),就会自动启用“长图浏览”模式(上下滑动查看)。
立即学习“前端免费学习笔记(深入)”;
- 必须用官方 App 发,不能通过 H5 页面跳转或模拟 UA 绕过
- 图片需提前本地拼接好,不要依赖微博端拼接(它没有这个功能)
- 推荐用 Python 的
PIL.Image或 macOS 的sips命令拼接,避免用微信/QQ 自带截图工具生成的带阴影/圆角/水印图 - 上传前用
exiftool -all= image.jpg清除元数据,可降低被拦截概率
拼接长图时容易被忽略的细节
很多用户拼完图仍发不出,问题往往出在技术参数上:
- 宽度必须是
720px或750px(适配主流手机屏宽),过高(如 1080px)可能触发压缩降质甚至拒绝 - 高度不能超过
20000px,否则 App 上传时会静默失败(无提示,仅卡在“上传中”) - 务必保存为
RGB模式,CMYK或含 Alpha 通道的 PNG 会被转白底或报错 - 避免使用「截图 → 粘贴到画图 → 另存为」流程,Windows 画图默认保存为 8-bit PNG,微博不认
from PIL import Image示例:垂直拼接三张 720x1200 图片
imgs = [Image.open("p1.jpg"), Image.open("p2.jpg"), Image.open("p3.jpg")] width = 720 total_height = sum(img.height for img in imgs) result = Image.new('RGB', (width, total_height))
y_offset = 0 for img in imgs: result.paste(img, (0, y_offset)) y_offset += img.height
result.save("long_post.jpg", quality=95, optimize=True)
真正卡住人的不是“怎么拼”,而是拼完后发现微博 App 上传时没反应——大概率是宽度不对、高度超限,或者 PNG 模式没转。










