node-o3-canvas与node-canvas?

有没有人有这些node.js库中的任何一个或两个的经验? 好奇听到每个人的成功或困难。

LearnBoost是社区中最丰富的节点模块开发人员之一,因此我使用node-o3-canvas上的node-canvas。

我使用node-canvas将图像切片成服务器上的切片,并将其发送回客户端。 一切正常,就像你所期望的一样。 以下是您可能编写的代码样本:

 helper = function(x, y, canvas) { return function(err, str) { if (!tiles[x]) { tiles[x] = []; } tiles[x][y] = { data: str , buffer: canvas.toBuffer() , covered: true }; }; }; for (y = 0; y < tilesPerColumn; y += 1) { for (x = 0; x < tilesPerRow; x += 1) { //Create a new tile canvas each time so they don't run over each other tCanvas = new Canvas(chunkSize, chunkSize); tCtx = tCanvas.getContext('2d'); xOffSet = chunkSize * x; yOffSet = chunkSize * y; //Save a set of uncovered tiles to store in memory tCtx.drawImage(img, xOffSet, yOffSet, chunkSize, chunkSize, 0, 0, chunkSize, chunkSize); tCanvas.toDataURL(helper(x, y, tCanvas)); } } 

我唯一的陷阱是:

  • 如果在节点canvas中使用asynchronous方法,则需要小心分配新的canvas/上下文实例,以免中断正在写入/绘制的实例。
  • 出于某种原因,当使用服务器端base64编码图像时,我从来没有能够获得node-canvas的Image()对象正常工作。 我的问题是onLoad事件不会触发时,src属性分配一个base64string。 我没有花费太多的时间来处理这个问题,而是将图像写入临时文件来解决问题。