3.6官方给的截图功能在ios浏览器上会卡7-8秒
参考此链接中使用Uint8ClampedArray进行截图
但生成Uint8ClampedArray的length和原arraybuffer的length相同
无法生成指定长度和位置的Uint8ClampedArray
请问有人遇到这个问题么?
// 图片用32bit位表示一个像素,所以一行有width个像素,一共是width*32/8bit = width*4字节
let rowBytes = width * 4;
// let s3 = new Date().getTime();
// 依次读取图片里的每行数据,放入到ctx中。
for (let row = 0; row < height; row++) {
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// DEMO 写法(高性能,兼容性好)
let srow = height - 1 - row;
// 从图片的所有数据中,获取一行的图片字节数据
let oneLineImageData = new Uint8ClampedArray(arrayBuffer, Math.floor(srow * width * 4), rowBytes);
// 设置图片数据对象
// 设置一个一行的图片,所以就是 width, 1
let imageData = new ImageData(oneLineImageData, width, 1);
ctx.putImageData(imageData, 0, row);
}
