Ich versuche, ein Spiralrasterbeispiel (link) auf einem Server (mit Node.js) zu zeichnen. Ich habe jedoch ein Problem, bei dem mein Pfad nicht im exportierten Bild angezeigt wird und ich nur das heruntergeladene Bild sehen kann. Wahrscheinlich ein dummer Fehler auf meiner Seite, aber die Tage, in denen ich mich durch Google und die Dokumentation umsah, halfen mir nicht, ein Problem zu lösen.Implementieren eines Paper.js-Spiralrasterbeispiels auf der Serverseite
Was ich tat:
- hinzufügen
paper.
Präfixe - geändert +/- entsprechenden
add()
undsubtract()
- Versucht einen Pfad innerhalb einer Schicht vor.
Hier ist mein Code:
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;
aufgerufen, natürlich, wie folgt aus:
var drawer = require('./drawer.js');
drawer.drawSpiral('','abc', function(){});
ich mit der Verwendung von paper.js innen Node.js nicht vertraut bin, aber ich würde versuchen, den Blick nach dem Ziehen zu aktualisieren - versuchen Sie, * paper.view.update () * am Ende Ihres Zeichnungscodes –
Der Link zum Spiralraster-Beispiel sollte eine Gesundheitswarnung haben! ;) –
@Nicholas, danke für den Vorschlag, ich werde es versuchen, wenn ich eine Sekunde bekomme. Ein Nodejs-Beispiel, das im Repo enthalten war, zeichnete jedoch auch einige Pfade und zeigte sie erfolgreich ohne diese Zeile an. Seltsam:/ – dmee3