Tôi đang cố vẽ một ví dụ raster xoắn ốc (link) trên máy chủ (chạy Node.js). Tuy nhiên, tôi đang đối mặt với một vấn đề mà đường dẫn của tôi không được hiển thị trên khung đã xuất và tôi chỉ có thể xem hình ảnh đã tải xuống. Có lẽ là một sai lầm ngớ ngẩn ở bên cạnh tôi, tuy nhiên, những ngày tìm kiếm thông qua Google và tài liệu không giúp tôi giải quyết vấn đề.Thực hiện ví dụ về raster xoắn giấy Paper.js ở phía máy chủ
Những gì tôi đã làm:
- Thêm
paper.
tiền tố - Thay đổi +/- để tương ứng
add()
vàsubtract()
- Cố gắng trình bày một con đường trong một lớp.
Đây là mã của tôi:
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;
Viện dẫn, rõ ràng, như thế này:
var drawer = require('./drawer.js');
drawer.drawSpiral('','abc', function(){});
Tôi không quen thuộc với việc sử dụng paper.js bên Node.js, nhưng tôi muốn cố gắng cập nhật View sau khi vẽ - thử thêm * paper.view.update () * ở cuối mã vẽ của bạn –
Liên kết đến ví dụ raster xoắn ốc phải có cảnh báo về sức khỏe! ;) –
@Nicholas, cảm ơn vì đề nghị này, tôi sẽ thử nó bất cứ khi nào tôi nhận được một giây. Tuy nhiên, ví dụ Nodejs đã được bao gồm trong repo cũng đã vẽ một số đường dẫn và hiển thị chúng thành công mà không có dòng đó. Weird:/ – dmee3