我想以base64数据url格式获得画布的一部分,它将被发送到我的api因为我使用的是ctx.getImageData((方法,它返回一个箝位的uint8数组这是代码:
const data = ctx.getImageData(mousex, mousey, mousex1, mousey1);
const clamped = data.data
}
我尝试过很多btoa方法,但要么返回一个满是A
的坏数组,要么返回一一个有很多/的坏数组
您可以使用canvas.toDataURL(类型,encoderOptions(来实现此目的。
- 首先提取源图像的部分。您不需要getImageData((。相反,使用
part_canvas = document.createElement("canvas")
创建第二个画布,该画布不必在页面上可见 - 为其指定要提取的零件的大小、宽度和高度
- 画布上的
part_ctx = part_canvas.getContext("2d")
- 然后
part_ctx.drawImage(source_image, part_x, part_x, part_width, parth_height, 0, 0, part_width, parth_height);
这将获取源图像的一个矩形区域,并将其放在无形画布中 - 最后,您可以执行
part_canvas.toDataURL()
,并且您有数据URL
没有测试。但我认为这应该奏效。