gpt4 book ai didi

javascript - Paper.js 栅格化图层失败

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:03 25 4
gpt4 key购买 nike

我正在使用 Paper.js 在图像上绘图、添加文本等。然后我需要在图像上绘制所有草图并将其全部发送回服务器。具体来说,我在路径光栅化方面遇到了麻烦。我正在尝试使用

paper.project.layers[0].rasterize();

但是当我在图像上执行此操作时,我没有让线条光栅化。我最终得到了

data:,

而不是前缀为“data:image/png;base64”之类的 base64 编码图像。这是一个 Paper.js sketch我在哪里工作。要使用它,请在小猫周围单击几次以绘制几条线。一旦你有两条线,一个新窗口应该打开,显示光栅化图像和你画的红线。

它在草图中有效,但在我自己的代码中无效。

这是我管理绘图的 React 类:

var DrawingTools = React.createClass({
componentDidUpdate: function() {
// Initial path object, will be reset for new paths after Alt is released
var path = this.newPath();

// On mousedown add point to start from
paper.project.layers[0].on('mousedown', function(event) {
if(event.event.altKey && !event.event.ctrlKey) { // Alt key to add a path, but disallow attempting to add text at the same time
if(path.lastSegment == null) {
path.add(event.point, event.point);
} else {
path.add(path.lastSegment.point, path.lastSegment.point)
}
}
});

// On mousedrag add points to path
paper.project.layers[0].on('mousedrag', function(event) {
if(event.event.altKey && !event.event.ctrlKey) { // Alt key to add a path, but disallow attempting to add text at the same time
if(event.event.shiftKey) { // Use shift key for freeform
path.add(event.point);
} else { // Default of straight line added to path
path.lastSegment.point = event.point;
}
}
}.bind(this));

// Each time Alt comes up, start a new path
var tool = new paper.Tool();
tool.onKeyUp = function(event) {
if(event.key == "option") {
path.onMouseEnter = this.props.movableEvents.showSelected;
path.onMouseDrag = this.props.movableEvents.dragItem;
path.onMouseLeave = this.props.movableEvents.hideSelected;

// Start a new path
path = this.newPath();
}
}.bind(this);
},
newPath: function() {
var path = new paper.Path();
path.strokeColor = 'black';
path.strokeWidth = 10;
return path;
},
render: function() {
// Someday colors will go here, or thickness controls, etc.
return (
<div>
</div>
);
}
});

module.exports = DrawingTools;

下面是进行光栅化的代码:

var layerAsRaster = paper.project.layers[0].rasterize(); // TODO flatten layers when have multiple layers // Layer to Paper.js Raster object
var dataString = layerAsRaster.toDataURL();
console.log(dataString);

所以光栅化适用于添加 PointTexts ,但不适用于路径。为什么是这样?与草图相比,我的代码有什么问题?

最佳答案

我认为您对问题的处理有误。也许更好的方法是保存用户点击的点,然后将该数据发送回服务器,你知道它们总是会形成直线。也稍微优化了网络访问。

关于javascript - Paper.js 栅格化图层失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com