HTML5 canvas Mac OS 上的本机函数 getImageData() 速度较慢
HTML5 canvas slow native function getImageData() on Mac OS
我在 Mac OS 上使用一个本机 HTML5 canvas 函数 getImageData()
有问题。我 运行 在 jsperf 中使用类似功率的处理器测试此功能,结果是:
Ubuntu 14.04 - chrome/opera: 300k operations/sec
Window 7/8/8.1 - chrome/opera/ie/mozilla:大约 250k operations/sec
Mac OS - safari/chrome/opera:大约 1k operations/sec
使用 getImageData
以获得更好的性能需要使用 x,y 仅作为可变整数值,第二个两个参数以获得更好的性能建议使用 1px
var ctxData=canvasContext.getImageData(x,y,1,1);
rgba = ctxData.data;
/* rgba[0] = red channel, rgba[1] = green channel, rgba[2] = blue channel, rgba[3] = alpha channel */
我在论坛上发现讨论如何优化这个功能:
http://w3facility.org/question/javascript-canvas-buffer-slow-performance-on-ios-safari-and-chrome/
提供的主要内容:
– cache canvas.width and canvas.height to avoid DOM access, just create ONE imageData that you keep on modifying (relieves the g.c.).
看起来像是获取静态完整 canvas 图像数据并使用它,但我不能一直使用静态 canvas 数据,因为我创建时就像一个绘画应用程序,每时每刻都在绘图改变 canvas 上下文。
也许有人可以提供什么?
我强烈建议将此类作品(例如图像和/或其他密集数据操作)发送给网络工作者,这样您就不会阻塞调用堆栈和应用程序的响应能力。
Web Workers on HTML5 Rocks 帮助我弄清楚了如何使用 Web Worker 进行图像转换而不会使您的绘画应用程序卡住。
您还可以查看
Web Worker Documentation on MDN 如果你喜欢的话。
我在 Mac OS 上使用一个本机 HTML5 canvas 函数 getImageData()
有问题。我 运行 在 jsperf 中使用类似功率的处理器测试此功能,结果是:
Ubuntu 14.04 - chrome/opera: 300k operations/sec
Window 7/8/8.1 - chrome/opera/ie/mozilla:大约 250k operations/sec
Mac OS - safari/chrome/opera:大约 1k operations/sec
使用 getImageData
以获得更好的性能需要使用 x,y 仅作为可变整数值,第二个两个参数以获得更好的性能建议使用 1px
var ctxData=canvasContext.getImageData(x,y,1,1);
rgba = ctxData.data;
/* rgba[0] = red channel, rgba[1] = green channel, rgba[2] = blue channel, rgba[3] = alpha channel */
我在论坛上发现讨论如何优化这个功能: http://w3facility.org/question/javascript-canvas-buffer-slow-performance-on-ios-safari-and-chrome/
提供的主要内容:
– cache canvas.width and canvas.height to avoid DOM access, just create ONE imageData that you keep on modifying (relieves the g.c.).
看起来像是获取静态完整 canvas 图像数据并使用它,但我不能一直使用静态 canvas 数据,因为我创建时就像一个绘画应用程序,每时每刻都在绘图改变 canvas 上下文。 也许有人可以提供什么?
我强烈建议将此类作品(例如图像和/或其他密集数据操作)发送给网络工作者,这样您就不会阻塞调用堆栈和应用程序的响应能力。
Web Workers on HTML5 Rocks 帮助我弄清楚了如何使用 Web Worker 进行图像转换而不会使您的绘画应用程序卡住。
您还可以查看 Web Worker Documentation on MDN 如果你喜欢的话。