公众号封面
900×500 头图 / 次图标准尺寸 · 模板设计
头图/次图多比例模板
900×500 头图 / 次图标准尺寸 · 模板设计
拖入或点击上传背景图
了解工具定位 · 使用场景 · 对比优势
新媒体小编每天要推 2-3 篇推文,每篇都需要不同比例的头图和次图。手动裁剪耗时且容易比例出错。用本工具选好模板后,上传一张主视觉图,自动生成 900×383(头图)和 900×500(次图)等多比例成品,一套图 10 秒出完,排版效率翻倍。
社群运营者做裂变活动时,需要统一风格的系列封面(主推文、朋友圈海报、社群分享图)。每次改文案都要重新设计太慢。本工具提供多比例模板库,换文案后一键同步生成所有尺寸,保持视觉一致性,活动上线时间从半天压缩到半小时。
公司公众号有严格的品牌规范(LOGO 位置、主色调、字体)。设计部出模板后,市场部同事用本工具填入活动标题和日期即可生成合规封面,无需每次找设计师排期。避免手动调整导致的 LOGO 移位或颜色偏差问题。
知识博主做系列专栏(如「职场 100 问」),每期封面需要统一编号和标题样式。本工具支持模板复用,上传一次底图后,每期只改标题和期数,自动保持编号对齐和视觉连贯,读者一眼认出是系列内容,提升专栏完读率。
电商运营做秒杀 / 拼团活动时,封面需要突出倒计时和价格信息。手动做图经常漏改时间或价格。用本工具预设好倒计时组件和价格占位符,每次活动只更新核心参数,自动生成带动态元素的封面,避免人为失误导致活动延期。
| 维度 | 本工具 | 竞品 A(创客贴) | 传统方法(PS/AI) |
|---|---|---|---|
| 数据隐私 | 纯浏览器处理,不上传服务器 | 需上传图片至云端 | 本地文件,无上传 |
| 处理速度 | 秒级出图 | 依赖网络加载,2-5秒 | 需手动操作,5-15分钟 |
| 离线可用 | 完全离线 | 需联网 | 完全离线 |
| 模板数量 | 仅头图/次图比例,无冗余模板 | 海量模板,需筛选 | 无模板,从零设计 |
| 操作门槛 | 无需设计经验,一键生成 | 需拖拽编辑,有学习成本 | 需专业软件技能 |
| 收费模式 | 免费无限制 | 免费版有水印/导出限制 | 需购买正版软件 |
| 输出格式 | 直接下载 PNG | 需手动导出,格式受限 | 可自定义多种格式 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 900x500 | 1.91:1 头图(900x500) | 典型场景:公众号头图标准尺寸 |
| 1200x1200 | 1:1 次图(1200x1200) | 典型场景:公众号次图/分享卡片 |
| 1080x1080 | 1:1 次图(1080x1080) | 常见场景:小红书/朋友圈方图适配 |
| 1920x1080 | 16:9 头图(1920x1080) | 边界 case:宽屏设备头图裁剪适配 |
| 100x100 | 1:1 次图(100x100) | 边界 case:极小尺寸,低于推荐像素 |
| 3000x2000 | 1.5:1 头图(3000x2000) | 边界 case:超大尺寸,可能被压缩 |
| 800x800 | 1:1 次图(800x800) | 易错 case:用户误以为次图是 1:1 |
| 900x383 | 2.35:1 头图(900x383) | 易错 case:电影宽幅比例,非标准尺寸 |
上传一张 1920×1080 的图片,选择 1:1 模板后直接下载,未做任何裁剪或缩放上传前确认图片主体在 1:1 安全区内,或使用工具内置的裁剪/缩放功能调整后再下载模板只改变输出画布比例,不自动裁剪图片内容。原图比例与模板比例差异越大,图片被拉伸或裁切的风险越高
用 300×300 的次图模板(1:1)直接作为公众号头条封面(要求 900×383)头条封面选 900×383 的 2.35:1 模板;次图封面选 300×300 的 1:1 模板公众号头条封面比例 2.35:1,次图 1:1;混用会导致封面在消息列表中被严重裁剪或留黑边
上传一个透明背景的 PNG 图标,选择白色背景模板,下载后发现图标周围是黑色方块上传前将透明 PNG 合并到白色背景图层,或选择支持透明通道的模板(如 PNG 输出格式)工具默认输出 JPG 格式,不支持透明通道;透明区域会被渲染为黑色。需手动切换输出格式为 PNG 才能保留透明
在模板的标题区域输入 30 个中文字符,未预览直接下载输入文字后点击「预览」按钮,确认文字完整显示在安全框内;超长时缩短文案或换行每个模板的标题/副标题区域有固定像素范围(如 600×80px),超出部分会被自动截断,不会自动缩小字号
在模板编辑器中输入「你好」,选择「华文行楷」字体,下载后发现文字偏移或乱码使用工具内置的字体列表中的字体(如思源黑体、Noto Sans SC);如需特殊字体,先在本地渲染后截图上传工具仅预置了 5-8 种常用中文字体,未安装的字体在服务端渲染时会被回退为默认字体,导致字距、行高异常
设计一张 900×383 的封面,把关键信息放在右下角,发布后发现在公众号消息列表中被裁掉了把关键信息(标题、人物面部、LOGO)放在 900×383 的中心 600×383 区域(即左侧 150px 到右侧 150px 之间)公众号后台对封面有二次裁剪:消息列表裁剪左右各约 150px,星标/置顶裁剪上下各约 50px;安全区是中心矩形
上传一张 400×300 的图片,放大到 900×383 的模板中,下载后图片模糊上传图片分辨率至少为 900×383(头条)或 300×300(次图),建议 2 倍分辨率(1800×766)以适配 Retina 屏幕工具不会对低分辨率图片做超分处理;放大后像素不足会导致锯齿和模糊,尤其在手机端高 DPI 屏幕下更明显
连续 5 篇文章的封面都使用白色背景 + 蓝色文字模板每期封面更换主色调(如第 1 期蓝、第 2 期橙、第 3 期绿),或使用不同背景图片公众号消息列表按时间倒序排列,相同色系的封面会降低用户辨识度,影响点击率;建议每期至少换色相
公式推导 · 流程图解 · 依据出处
W = H × R, H = 900, R ∈ {1.9, 1, 0.8}
W — 封面图宽度(像素)H — 封面图高度(像素),固定 900R — 宽高比,头图 1.9:1,次图 1:1,次图 0.8:1制作公众号次图(1:1 比例)。H=900,R=1,则 W=900×1=900。最终输出 900×900 像素的正方形封面。若制作头图(1.9:1),R=1.9,则 W=900×1.9=1710,输出 1710×900 像素的横版封面。
适用于微信公众号官方规范:头图(1.9:1)用于文章顶部,次图(1:1 或 0.8:1)用于列表/转发卡片。固定高度 900px 为工具默认输出,可手动缩放至其他尺寸。
3 种主流语言 · 复制即用
from PIL import Image, ImageDraw, ImageFont
# 公众号头图标准尺寸 900x383(2.35:1)
W, H = 900, 383
img = Image.new('RGB', (W, H), '#2b6cb0')
draw = ImageDraw.Draw(img)
# 添加文字(需本地字体文件)
try:
font = ImageFont.truetype('NotoSansSC-Regular.ttf', 48)
except IOError:
font = ImageFont.load_default()
draw.text((50, 140), '公众号封面标题', fill='white', font=font)
# 裁剪为次图比例 1:1(200x200)
img_square = img.crop((0, 0, 200, 200))
img_square.save('cover_square.png')
img.save('cover_primary.png')
print('已生成头图 cover_primary.png 和次图 cover_square.png')package main
import (
"image"
"image/color"
"image/png"
"log"
"os"
"golang.org/x/image/font"
"golang.org/x/image/font/basicfont"
"golang.org/x/image/math/fixed"
)
func main() {
// 公众号头图 900x383
img := image.NewRGBA(image.Rect(0, 0, 900, 383))
// 填充背景色
for y := 0; y < 383; y++ {
for x := 0; x < 900; x++ {
img.Set(x, y, color.RGBA{43, 108, 176, 255})
}
}
// 添加文字(使用内置字体,仅支持 ASCII)
point := fixed.Point26_6{X: fixed.I(50), Y: fixed.I(200)}
d := &font.Drawer{
Dst: img,
Src: image.NewUniform(color.White),
Face: basicfont.Face7x13,
Dot: point,
}
d.DrawString("Cover Title")
// 保存
f, _ := os.Create("cover.png")
defer f.Close()
if err := png.Encode(f, img); err != nil {
log.Fatal(err)
}
println("已生成 cover.png")
}
const { createCanvas, loadImage, registerFont } = require('canvas');
const fs = require('fs');
async function generateCover() {
// 头图 900x383
const canvas = createCanvas(900, 383);
const ctx = canvas.getContext('2d');
// 背景色
ctx.fillStyle = '#2b6cb0';
ctx.fillRect(0, 0, 900, 383);
// 文字(需安装字体或使用默认)
ctx.fillStyle = '#ffffff';
ctx.font = 'bold 48px sans-serif';
ctx.fillText('公众号封面', 50, 200);
// 输出为 PNG
const buffer = canvas.toBuffer('image/png');
fs.writeFileSync('cover.png', buffer);
console.log('已生成 cover.png');
}
generateCover().catch(console.error);9 个高频疑问