Sto tentando di disegnare un esempio raster a spirale (link) su un server (eseguendo Node.js). Tuttavia, sto affrontando un problema in cui il mio percorso non è visualizzato sul frame esportato e posso solo vedere l'immagine scaricata. Probabilmente uno stupido errore dalla mia parte, tuttavia, i giorni di guardare attraverso Google e la documentazione non mi hanno aiutato a risolvere un problema.Implementazione di un esempio raster spirale di Paper.js sul lato server
Quello che ho fatto:
- Aggiungi
paper.
prefissi - cambiato +/- per corrispondenti
add()
esubtract()
- provato presentando un percorso all'interno di un livello.
Ecco il mio codice:
var paper = require('paper');
var fs = require('fs');
var drawer = {};
var canvas = new paper.Canvas(1000, 1000);
paper.setup(canvas);
var layer = paper.project.activeLayer;
drawer.drawSpiral = function(url, filename, fn) {
var url = 'http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png';
var raster = new paper.Raster(url);
raster.onLoad = function() {
raster.fitBounds(paper.view.bounds);
var position = paper.view.center;
var count = 0;
var max = Math.min(raster.bounds.width, raster.bounds.height) * 0.5;
var path = new paper.Path();
path.fillColor = 'black';
path.closed = true;
while ((paper.view.center - position).length < max) {
count++;
var vector = new paper.Point(count * 5, count/100);
var rot = vector.rotate(90);
var color = raster.getAverageColor(position.add(vector).divide(2));
var value = color ? (1 - color.gray) * 3.7 : 0;
rot.length = Math.max(value, 0.2);
path.add(position.add(vector).subtract(rot));
path.insert(0, position.add(vector).add(rot));
position = position.add(vector);
}
path.smooth();
layer.insertChild(0, path);
layer.fitBounds(paper.view.bounds);
drawer.exportPNG(filename, fn);
};
}
drawer.exportPNG = function(filename, fn) {
out = fs.createWriteStream(__dirname + '/static/img/' + filename + '.png');
stream = canvas.pngStream();
stream.on('data', function(chunk) {
out.write(chunk);
});
stream.on('end', function() {
fn();
});
}
module.exports = drawer;
Richiamato, ovviamente, in questo modo:
var drawer = require('./drawer.js');
drawer.drawSpiral('','abc', function(){});
Non ho dimestichezza con l'utilizzo di paper.js all'interno Node.js, ma mi piacerebbe provare a aggiornare la vista dopo aver disegnato - provare ad aggiungere * paper.view.update () * alla fine del codice di disegno –
Il collegamento all'esempio di spirale raster dovrebbe avere un avviso di integrità! ;) –
@Nicholas, grazie per il suggerimento, lo proverò ogni volta che otterrò un secondo. Tuttavia, l'esempio Nodejs che è stato incluso nel repository ha anche disegnato alcuni percorsi e li ha visualizzati correttamente senza quella linea. Stranamente:/ – dmee3