2

方法1

如果想使用 canvas 原生的 toDataURL ,参考这篇问答,以下代码是具体方法。但这个方法如果在iOS设备上使用,获取到的图像会上下翻转(效果相当于css3transform: scaleY(-1);)。原因不明,可能也是webGL搞鬼吧。

//用WebGL时,要渲染后同步获取base64才有效,异步再来就只能拿到一张黑图
app.render();
$previewPic.src = app.view.toDataURL();

方法2

let app = new PIXI.Application();
app.renderer.plugins.extract.base64(app.stage);

这种方法其实就是把canvas中的app.stage转为base64,这有个问题是,如果你放进app.stage的内容没有撑满canvas,输出的base64图像则会比canvas要小,如果app.stage的内容溢出了canvas,溢出部分依然会输出在base64图像中,所以需要给stage加一个mask,以及一个透明的刚好充满canvasPIXI.Graphics


黒之染
3.1k 声望48 粉丝

两年半个人练习生,喜欢ctrl+c/ctrl+v/delete