узел-o3-холст против узла-холст? - PullRequest
1 голос
/ 01 мая 2011

Кто-нибудь имеет опыт работы с одной или обеими этими библиотеками node.js?Любопытно услышать успех или трудности с каждым из них.

1 Ответ

3 голосов
/ 18 мая 2011

LearnBoost является одним из самых плодовитых разработчиков узловых модулей в сообществе, и по этой причине я остановился на node-canvas вместо node-o3-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));        
    }
}

Единственные ошибки, которые у меня были:

  • Если вы используете асинхронные методы в node-canvas,Вы должны быть осторожны, чтобы распределять новые экземпляры canvas / context, чтобы не прерывать тот, который может быть при записи / рисовании.
  • По какой-то причине мне так и не удалось заставить объект Image-canvas узла работать правильнопри использовании серверных изображений в кодировке base64.Моя проблема заключалась в том, что событие onLoad не сработало, когда свойству src была назначена строка base64.Я не тратил много времени на борьбу с этим, а вместо этого записал изображения во временные файлы, чтобы обойти проблему.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...