javascript - React Native将SVG转换为PNG?
问题描述
我正在尝试制作一个用户必须绘制某些东西的应用程序,然后我使用该绘图和 Tensorflow 来检测形状。我设法用 PanGestureHandler、View、Svg 和 Path 制作了一个绘图画布,但现在我想将此画布转换为 PNG(base64 blob)。我有一个函数可以将每个点转换为svg d,所以我的计划是让 svg 像这样开始和结束:
this.svgBegin = `<svg height="210" fill="red" viewBox="0 0 1000 1000" width="400" xmlns:xlink="http://www.w3.org/1999/xlink"><path fill="red" d="`
this.svgEnd = `"/></svg>`
以及它们之间的点,所以我有点伪造从 react-native-svg 到 xml svg 的转换。顺便说一句,我的渲染部分如下所示:
return (
<PanGestureHandler onGestureEvent={this._onPanGestureEvent}>
<View style={{width: windowWidth, height: windowHeight - 100, backgroundColor: 'green'}}>
<Svg width={windowWidth} fill={"#FFF"} height={windowHeight-100}
>
<G>
<Path
// key={this.state.previousStrokes.length}
d={this.pointsToSvg(this.state.vector)}
stroke={"#000"}
strokeWidth={4}
fill="none"
strokeLinecap="round"
strokeLinejoin="round"
/>
</G>
</Svg>
<Button title={"Clear"} onPress={() => this.hide()} />
<Button title={"Export"} onPress={() => this.exportBase()} />
</View>
</PanGestureHandler>
);
问题是似乎没有任何效果。我将我构建的 svg 字符串发送给另一个并将其传递给 xml={} 道具,然后通过使用引用,我执行以下操作:
this.pathRef.current.toDataURL(data => { ... play with data } )
并将 blob 传递给 Image 组件以查看结果(无论如何我不需要显示它,我只想检查输出图像是否是我刚刚绘制的)。
我做错了吗?我认为 react-native-svg/Svg 组件有问题。当我将面部 xml svg 导出到真实文件并在浏览器中打开时,这正是我在自制画布上绘制的内容。顺便说一句,我正在使用世博会。谢谢!
解决方案
推荐阅读
- memory - OpenCL 内存传输函数如何工作?
- react-native - EXPO : 将文件系统导出到文件,进入 android 文件夹
- jmeter - 虽然控制器完成后没有执行下一个线程
- c# - 绑定到页面上 UserControl 的自定义依赖属性不起作用
- apache-kafka - 由于突然终止,kafkastream 重新启动后未收到任何记录
- azure - 如何使用嵌套属性在 cosmos DB 中定义唯一键
- sql - 在 ORACLE:ORA-00923:FROM 关键字未指定
- node.js - Apache Kafka 2.3 + Node.js 10.15 + 消费者 + 生产者
- javascript - 在 Next.js 自定义服务器中记录错误的 Express 中间件
- python - ITK 过滤器上的非零退出代码