繁体   English   中英

NodeJs 将 PNG 转换为 SVG?

[英]NodeJs convert PNG to SVG?

我搜索了一个将 PNG 或 JPEG 图像转换为 SVG Vectordrawing 的解决方案。 我发现了很多“将 SVG 转换为 PNG”,但对将 PNG 转换为 SVG 一无所知。 有人可以帮我吗?

基于原始Potrace,有一个名为node-potrace的 npm 包,用于从位图图像生成 SVG 轮廓。

Potrace 是一种用于跟踪位图的工具,这意味着将位图转换为平滑、可缩放的图像。

演示: http : //kilobtye.github.io/potrace/

演示

我正在尝试将不同的图像跟踪库收集到一个项目中,目前是potrace、imagetracerjs 和 geometrize:(WIP / 非常新的项目)

浏览器/ 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 图像跟踪库,请发表评论。

如果要将多个 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`)
})

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 客户端。

https://github.com/jankovicsandras/imagetracerjs

如果你想进入选项 2,我已经在https://github.com/piercus/nodeJpg2SVG上制作了一个实现potrace的nodejs服务器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM