サーバー(Node.jsを実行)でスパイラルラスターの例(リンク)を描画しようとしています。しかし、エクスポートしたフレームに自分のパスが表示されず、ダウンロードした画像しか表示されないという問題に直面しています。おそらく私の側のばかげた間違いですが、Google とドキュメントを何日も調べても、問題を解決するのに役立ちませんでした。
私がしたこと:
paper.
接頭辞を追加- +/- を対応する
add()
およびに変更subtract()
- レイヤー内のパスを提示しようとしました。
これが私のコードです:
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;
明らかに、次のように呼び出されます。
var drawer = require('./drawer.js');
drawer.drawSpiral('','abc', function(){});