我搜索解决方案以将PNG或JPEG图像转换为SVG Vectordrawing。我发现很多"将SVG转换为PNG"但没有关于将PNG转换为SVG的信息。有人可以帮我吗?
答案 0 :(得分:1)
在原始Potrace的基础上,有一个名为node-potrace的npm软件包,用于从位图图像生成SVG轮廓。
Potrace是用于跟踪位图的工具,这意味着将位图转换为平滑的可缩放图像。 T
演示:http://kilobtye.github.io/potrace/
答案 1 :(得分:0)
PNG到SVG类似于JPG到SVG
三个选项
使用在线转换的API
http://apiv2.online-convert.com/
运行您自己的node.js服务器并使用Potrace或AutoTrace
在线转换使用的https://www.npmjs.com/package/potrace https://www.npmjs.com/package/autotrace
或者使用imagetracerjs客户端。
如果你想进入选项2,我已经在https://github.com/piercus/nodeJpg2SVG上建立了一个实现potrace的nodejs服务器
答案 2 :(得分:0)
我正在尝试将不同的图像跟踪库收集到一个项目中,目前这里是potrace,imagetracerjs和geometrize:(WIP /非常新的项目)
browser / node.js:API:https://www.npmjs.com/package/svg-png-converter
命令行工具:https://www.npmjs.com/package/svg-png-converter-cli
用户友好的游乐场(WIP):https://cancerberosgx.github.io/demos/bitmap2vector-converter/
没有那么友好的游乐场(仅实施potrace):https://cancerberosgx.github.io/demos/svg-png-converter/playground/#
对于像图像一样的徽标绘图,效果很好。对于照片,它几乎可以完全复制它,但是生成的svg太复杂了。
该库将使用svgo优化生成的SVG,从而大大简化和减小其大小。
如果有人知道另一个JS图像跟踪库,请发表评论。
答案 3 :(得分:0)
如果要将多个png文件转换为svg,可以使用此脚本。
const fs = require('fs')
const potrace = require('potrace')
const convertFolderPath = 'converts'
const files = [
'file 1',
'file 2'
]
const convertFile = file => {
return new Promise((resolve, reject) => {
potrace.trace(file, (err, svg) => {
if (err) reject(err)
const splitFilePath = file.split('/')
const filename = splitFilePath[splitFilePath.length - 1]
const splitFilename = filename.split('.')
splitFilename[splitFilename.length - 1] = 'svg'
const newFilename = splitFilename.join('.')
const outputPath = `${convertFolderPath}/${newFilename}`
fs.writeFileSync(outputPath, svg)
resolve(true)
})
})
}
if (!fs.existsSync(convertFolderPath)) {
fs.mkdirSync(convertFolderPath)
}
let convertedFiles = 0
files.forEach(async file => {
await convertFile(file)
convertedFiles++
console.log(`${convertedFiles}/${files.length} converted`)
})