Canvas 电子与气流
我无法让createPngstream与fabricjs一起在electron中工作 嗨,我正在使用织物生成静态横幅 仅使用nodejs就可以很好地工作 现在我的同事也希望这样做,所以我想建立一个 电子应用程序供他使用。但是现在当我试着在electron中运行代码时,我得到了这个错误 未捕获类型错误:canvas.createPNGStream不是函数 我可以在electron中使用createPNGStream,如果我使用canvas whitout fabric? 我能做些什么来解决这个问题Canvas 电子与气流,canvas,electron,fabricjs,Canvas,Electron,Fabricjs,我无法让createPngstream与fabricjs一起在electron中工作 嗨,我正在使用织物生成静态横幅 仅使用nodejs就可以很好地工作 现在我的同事也希望这样做,所以我想建立一个 电子应用程序供他使用。但是现在当我试着在electron中运行代码时,我得到了这个错误 未捕获类型错误:canvas.createPNGStream不是函数 我可以在electron中使用createPNGStream,如果我使用canvas whitout fabric? 我能做些什么来解决这个问题
const fs = require('fs')
const fabric = require('fabric').fabric;
let canvas = new fabric.Canvas(null, { width: 500, height: 500 });
fabric.Image.fromURL(__dirname+'/lime-cat.jpg', function(img) {
img.set({left: 0, top: 0});
canvas.add(img);
});
canvas.renderAll();
let tagline = new fabric.Textbox(tagres, {
fontSize: 50,
width:iWidth,
fixedWidth: iWidth,
fill: '#ffffff',
textAlign:'center',
fontFamily:'font90557',
left: canvas.width/2, top: canvas.height/2, originX: 'center', originY: 'top',
lineHeight:0.8,
shadow: 'rgba(0,0,0,1) 4px 4px 4px'
});
canvas.add(tagline);
canvas.renderAll();
const out = fs.createWriteStream(__dirname + '/test.png')
const stream = canvas.createPNGStream()
stream.pipe(out)
out.on('finish', () => console.log('The PNG file was created.'))
我想简单地加上这个作为一个评论。。。但显然我需要回答它?!(有些非常奇怪的SO规则!) 我非常确定createPNGStream是canvas的nodejs方法 也在相关部分引用自; 所有这些都只是创建织物画布并将文本对象渲染到画布上。现在,如何创建画布上渲染的任何对象的图像?使用画布实例上可用的createPNGStream方法createPNGStream返回节点的流对象,然后可以使用on('data')将其输出到图像文件中,并写入与图像文件(fs.createWriteStream())对应的流中 fabric.Canvas#createPNGStream是特定于节点的方法之一。其他一切都是一样的-您仍然可以像往常一样创建对象,将它们添加到画布上,修改、渲染等等
解决方案似乎是在服务器上运行node.js、node canvas和fabric。说明在Node.js上标题为“Fabric on Node.js”的一节中进行了概述。我想简单地将其添加为注释。。。但显然我需要回答它?!(有些非常奇怪的SO规则!) 我非常确定createPNGStream是canvas的nodejs方法 也在相关部分引用自; 所有这些都只是创建织物画布并将文本对象渲染到画布上。现在,如何创建画布上渲染的任何对象的图像?使用画布实例上可用的createPNGStream方法createPNGStream返回节点的流对象,然后可以使用on('data')将其输出到图像文件中,并写入与图像文件(fs.createWriteStream())对应的流中 fabric.Canvas#createPNGStream是特定于节点的方法之一。其他一切都是一样的-您仍然可以像往常一样创建对象,将它们添加到画布上,修改、渲染等等
解决方案似乎是在服务器上运行node.js、node canvas和fabric。在Node.js上标题为Fabric的部分中概述了说明
Fabric.StaticCanvas.prototype.createPNGStream=function(){var impl=Fabric.util.getNodeCanvas(this.lowerCanvasEl);返回impl&&impl.createPNGStream();}代码>尝试使用它。fabric.StaticCanvas.prototype.createPNGStream=function(){var impl=fabric.util.getNodeCanvas(this.lowerCanvasEl);返回impl&&impl.createPNGStream();}代码>尝试使用此选项。这看起来像是对我的真实回答u相关信息和支持您声明的链接uu一切正常!当你有足够的声誉(50)时,你将能够在其他投稿人的帖子上写评论(投票通过)同时,您可能希望查看随着声誉的提高而获得的其他特权这里>>>这看起来像是对我的真实回答u相关信息和支持您声明的链接uu很好!当你有足够的声誉(50)时,你将能够在其他投稿人的帖子上写评论(投票通过)同时,您可能希望在此处查看随着声誉的提高而获得的其他特权>>>