Canvas 节点画布与节点画布?

Canvas 节点画布与节点画布?,canvas,node.js,Canvas,Node.js,是否有人拥有这些node.js库中的一个或两个库的使用经验?我很想知道每个模块的成功与否。是社区中最多产的节点模块开发人员之一,因此我选择了node canvas而不是node-o3-canvas 我在服务器上使用节点画布将图像分割成分幅,并将其发送回客户端。一切都像你期望的那样。下面是您可能编写的代码类型的示例: helper = function(x, y, canvas) { return function(err, str) { if (!tiles[x]) {

是否有人拥有这些node.js库中的一个或两个库的使用经验?我很想知道每个模块的成功与否。

是社区中最多产的节点模块开发人员之一,因此我选择了node canvas而不是node-o3-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));        
    }
}
helper=函数(x,y,画布){
返回函数(err、str){
如果(!tiles[x]){
瓷砖[x]=[];
}
平铺[x][y]={
数据:str
,缓冲区:canvas.toBuffer()
,封面:真实
};
};
};  
对于(y=0;y
我唯一的问题是:

  • 如果在节点画布中使用异步方法,则需要小心分配新的画布/上下文实例,以免中断可能正在写入/绘制的实例
  • 由于某些原因,在使用服务器端base64编码的图像时,我始终无法使node canvas的Image()对象正常工作。我的问题是,当src属性被分配了base64字符串时,onLoad事件不会触发。我没有花太多的时间来解决这个问题,而是将图像写入临时文件来解决这个问题

这两位作者都是知名作家。看来,
node canvas
最近有了更多的提交,这使得它更有可能在将来使用更新版本的node.js进行维护。它还基于Cairo,这是一个在非VPS/自有服务器上处理的PITA。在非VPS服务器上安装Cairo是否幸运?我现在正在看Heroku,但如果不可能的话,我不想浪费时间。如果可能的话,我真的不想玩我自己的。有一个。我个人没有使用过它,所以我还不能说它是否有效。@jslatts“如果您在节点画布中使用异步方法”,您的意思是可以使用节点画布异步绘制吗?医生里什么也没找到