该组件提供了 Canvas 的 图片绘制 与 文本绘制 功能,使用同步的语法完成异步绘制,简化原生 canvas 绘制语法。
使用 npm 安装:
npm i create-picture --save
导入 create-picture
import CreatePicture from 'create-picture';
基础示例
// 初始化
const cp = new CreatePicture();
// 绘制图片,参数1为图片路径,其他参数与 CanvasRenderingContext2D.drawImage() 参数相同
cp.drawImage(require('../assets/save_bg.jpg'),0,0);
// 绘制文本
cp.drawText({content:'文本'});
// 获取合成图
cp.getPicture().then((picture)=>{
// picture 为合成的 base 64
});
new CreatePicture();
- 初始化,可接受一个对象参数drawImage()
- 绘制图片,第一个参数为图片路径,其他参数与 CanvasRenderingContext2D.drawImage() 参数相同drawRepeatImage()
- 绘制重复排列的图片drawCirclePicture()
- 绘制头像等圆形图片,与drawImage
参数相同drawText()
- 绘制文本,返回文字宽度(可选)getPicture().then((picture)=>{});
- 最终合成的图片
width
- 画布宽度,默认值750
height
- 画布高度,默认值1448
- 第一个参数为图片路径
- 其他参数与 CanvasRenderingContext2D.drawImage() 参数相同
- 第一个参数为图片路径
- 第二、三参数为平铺文件的宽高
- 第四、五参数为要平铺的区域
- 第一个参数为图片路径
- 其他参数与 CanvasRenderingContext2D.drawImage() 参数相同
- 如需指定图片宽高,可以使用
9
个参数的方式,传入图片宽高未知可以传入auto
自动获取 - 示例
cp.drawCirclePicture(headimgurl,0,0,'auto','auto',50,50,80,80);
fontStyle
- 文字样式,默认normal
fontVariant
- 文字变体,默认normal
fontWeight
- 文字宽度,默认normal
fontSize
- 文字宽度,默认30
lineHeight
- 文字行高,默认normal
fontFamily
- 字体,默认Arial
left
- 左对齐,默认0
top
- 上对齐,默认300
maxWidth
- 文字最大宽度,默认undefined
content
- 文本内容textAlign
- 对齐方式,默认start
textBaseline
- 文本基线,默认alphabetic
direction
- 文字方向,默认inherit
color
- 文字颜色,默认#000000
rotation
- 文字旋转角度,默认0
width
- 文字段落的宽度,超出自动换行,默认undefined
- 与 HTMLCanvasElement.toDataURL() 参数保持一致
- 默认为
'image/png'
- 示例
// 图片格式:jpg ,图片质量:0.6
getPicture('image/jpeg',0.6).then((picture)=>{})
// 图片格式:webp ,图片质量:0.8
getPicture('image/webp',0.8).then((picture)=>{})
- 示例代码
import CreatePicture from 'create-picture';
// 初始化
const cp:CreatePicture = new CreatePicture();
// 初始化(传参)
const cp:CreatePicture = new CreatePicture({width:750,height:1448});
// 绘制图片,参数1为图片路径,其他参数与 CanvasRenderingContext2D.drawImage() 参数相同
cp.drawImage(require('../assets/save_bg.jpg'),0,0);
// 绘制文本
cp.drawText({content:'文本'});
// 绘制文本,获取文字宽度
const textWidth = cp.drawText({
content:'文本',
fontSize: 30,
top: 300,
color: '#ffffff',
});
// 获取合成图
cp.getPicture().then((picture)=>{
// picture 为合成的 base 64
});