Skip to content

canvas

Canvas 操作工具。

导入

typescript
import { canvasToBase64, canvasToBlob, canvasDrawImage } from '@cloudcome/utils-browser/canvas';
import type { CanvasDrawImageOptions } from '@cloudcome/utils-browser/canvas';

类型定义

CanvasDrawImageOptions

typescript
interface CanvasDrawImageOptions {
  srcLeft?: number;
  srcTop?: number;
  srcWidth?: number;
  srcHeight?: number;
  destLeft?: number;
  destTop?: number;
  destWidth?: number;
  destHeight?: number;
}

属性说明

属性类型默认值描述
srcLeftnumber0源图像裁剪起始 X 坐标
srcTopnumber0源图像裁剪起始 Y 坐标
srcWidthnumber图像宽度源图像裁剪宽度
srcHeightnumber图像高度源图像裁剪高度
destLeftnumber0目标 Canvas 绘制起始 X 坐标
destTopnumber0目标 Canvas 绘制起始 Y 坐标
destWidthnumberCanvas 宽度目标 Canvas 绘制宽度
destHeightnumberCanvas 高度目标 Canvas 绘制高度

函数

canvasToBase64

将 Canvas 转换为 Base64 字符串。

typescript
function canvasToBase64(canvas: HTMLCanvasElement, type?: string, quality?: number): string;

参数

参数类型默认值描述
canvasHTMLCanvasElement-Canvas 元素
typestring'image/png'图片类型,如 'image/png''image/jpeg''image/webp'
qualitynumber-图片质量(0-1),仅对 'image/jpeg''image/webp' 有效

返回值

string - Base64 编码的图片字符串

示例

typescript
const canvas = document.createElement('canvas');
canvas.width = 100;
canvas.height = 100;

// 绘制内容
const ctx = canvas.getContext('2d')!;
ctx.fillStyle = 'red';
ctx.fillRect(0, 0, 100, 100);

// 转换为 Base64
const base64 = canvasToBase64(canvas); // 'data:image/png;base64,...'
const base64Jpg = canvasToBase64(canvas, 'image/jpeg', 0.8);

canvasToBlob

将 Canvas 转换为 Blob 对象。

typescript
function canvasToBlob(canvas: HTMLCanvasElement, type?: string, quality?: number): Promise<Blob>;

参数

参数类型默认值描述
canvasHTMLCanvasElement-Canvas 元素
typestring'image/png'图片类型
qualitynumber-图片质量(0-1)

返回值

Promise<Blob> - Blob 对象

边界情况

  • canvas.toBlob 返回 null 时(如浏览器不支持该格式),Promise 会被 reject,抛出 'canvas 导出二进制对象失败' 错误

示例

typescript
const canvas = document.createElement('canvas');
// ... 绘制内容

const blob = await canvasToBlob(canvas, 'image/jpeg', 0.9);
console.log(blob.size); // 文件大小
console.log(blob.type); // 'image/jpeg'

canvasDrawImage

在 Canvas 上绘制图片。

typescript
function canvasDrawImage(canvas: HTMLCanvasElement, url: string, options?: CanvasDrawImageOptions): Promise<void>;

参数

参数类型描述
canvasHTMLCanvasElementCanvas 元素
urlstring图片 URL
optionsCanvasDrawImageOptions可选,绘制选项

返回值

Promise<void>

边界情况

  • Canvas 无法获取 2D 上下文时(如 getContext('2d') 返回 null),抛出 'canvas context is null' 错误
  • 内部使用 imageLoad 加载图片,图片加载失败会向上抛出错误

示例

typescript
const canvas = document.createElement('canvas');
canvas.width = 200;
canvas.height = 200;

// 基本用法
await canvasDrawImage(canvas, 'https://example.com/image.jpg');

// 带裁剪选项
await canvasDrawImage(canvas, 'https://example.com/image.jpg', {
  srcLeft: 50,
  srcTop: 50,
  srcWidth: 100,
  srcHeight: 100,
  destLeft: 0,
  destTop: 0,
  destWidth: 200,
  destHeight: 200,
});

基于 MIT 许可发布