如何使用软件将PNG转换为SVG?


29

我希望能够完全裁剪使用MarvinSketch创建的SVG化学结构(请参见此问题),我想我可能已经想到了一种解决方案。我使用MarvinSketch创建一个大的PNG文件,然后使用GIMP裁剪该文件,然后将PNG转换为SVG。因此,我想知道是否有人知道可以在Ubuntu上安装高质量PNG-> SVG转换的免费软件(我不喜欢使用在线转换器,因为我总是怀疑恶意软件)。


1
好的,该代码是什么样的?据我所知,我尝试过反转您所说的代码(我是一个代码菜鸟)。这是我使用的代码`#{INKSCAPE_PATH} -z -f #{Guanidine.png} -w #{width} -j -e #{Guanidine.svg}
BH2017 2014年

1
完成后cd ~/Documents/Chem Structures/,是文件所在的目录。
BH2017

1
sudo apt-get install imagemagick然后在[$#-gt 0]时保存此脚本#!/ bin / bash; do picture = $ 1 png_file = echo "$picture" | sed 's/\.\w*$/.png/' / usr / bin / convert“ $ picture” png:“ $ png_file”在〜/ .local / share / nautilus / scripts中完​​成转换,并记住使其可执行,然后单击鼠标右键然后按节拍记录您将此脚本保存在
zeitue 2014年

1
好的,正如我说的我是菜鸟,所以您将不得不更好地解释一下,因为我所了解的是sudo apt-get install imagemagick
BH2017 2014年

2
不过,您应该注意,矢量图形(例如SVG)和像素图形(例如PNG)之间存在根本的区别。丢失矢量信息后,将无法恢复(无损)方式。因此,即使您从PNG“转换”为SVG,也基本上不会做任何其他事情,而是将像素图形(base64编码)嵌入SVG矢量图形文件中。该convert命令甚至更糟:它在像素图形的每个像素处放置一个圆圈,从而导致文件很大。因此,我将尝试直接剪切SVG文件。
soulsource

Answers:


24

因此,您正在寻找光栅矢量图形转换器/跟踪器potraceautotrace都在Ubuntu存储库中。我自己尝试potrace过,使用默认选项给出了不错的结果。我记得,这两种工具都不支持压缩格式作为输入,仅支持位图图像

请参阅Potrace示例

Potrace:将位图转换为矢量图形的实用程序

potrace是用于跟踪位图的实用程序,这意味着将位图转换为平滑的可缩放图像。输入是位图(PBM,PGM,PPM或BMP格式),默认输出是封装的PostScript文件(EPS)。通常的用途是从扫描的数据(例如公司或大学的徽标,手写的笔记等)创建EPS文件。生成的图像不会像位图那样“锯齿状”,而是平滑的。然后可以以任何分辨率对其进行渲染。

命令:

potrace -s inputfile

AutoTrace:位图到矢量图形转换器

AutoTrace是用于将位图转换为矢量图形的程序。AutoTrace项目的目的是开发类似于CorelTrace或Adobe Streamline的免费应用程序。在某些方面,它已经更好。AutoTrace最初是作为GIMP的插件创建的,现在是一个独立的程序。

命令:

autotrace -output-format svg inputfile

参考文献:

  • man potrace
  • man autotrace

更新资料


1
我运行了autotrace -vector svg inputfile(将输入文件更改为fenfluramine.png之后),但它没有用,我也将输出格式更改为svg,但没有用。我已经安装了。
BH2017

1
我运行了potrace -s inputfile(输入文件再次是potrace: /home/fusion809/Documents/Chem Structures/Fenfluramine.png: file format not recognized Possible input file formats are: pnm (pbm, pgm, ppm), bmp.
fenfluramine.png

1
@BrentonHorne,您应该创建PNM或BMP图像而不是PNG。两种工具都不支持压缩格式作为输入(PNG,JPEG ...),仅支持位图图像(PNM,BMP ...)。如果您无法导出其他文件,请尝试将其PNG转换为BMP。
user.dz 2014年

1
好吧,那你没回答我的问题。MarvinSketch可以导出到BMP,但是其背景并不透明,这就是为什么我首先建议使用PNG格式的原因。它不能执行PNM。
BH2017

2
啊哈,确实奏效了。谢谢。我认为,由于BMP不够透明,所以结果也不是那么透明。
BH2017

19

Inkscape有一个很棒的自动跟踪工具。

  1. 使用以下方法安装Inkscape sudo apt-get install inkscape
  2. 导入图片
  3. 选择你的图片
  4. 从菜单栏中,选择 Path -> Trace Bitmap Item
  5. 根据需要调整跟踪参数

查看他们的跟踪教程以获取更多信息。

一旦您对跟踪选项感到满意。您可以使用Inkscape的CLI对其进行自动化。


5
+1,谢谢。很高兴听到Inkscape potrace在GUI中集成了功能,如您提到的参考中所述。
user.dz

5
这是正确的答案,因为potrace不支持.png导入,并且转换时很容易遇到透明度等问题。
brianlmerritt

1
此外,Gimp还能追踪彩色图像,而potrace似乎错过了这些。

8

convert在终端中使用命令:

例如 : convert EXAMPLE.png EXAMPLE.svg

这是手册页中的一些信息:

convert(1) - Linux man page

Name

convert - convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

Synopsis

convert [input-options] input-file [output-options] output-file


3
这会将光栅图像嵌入SVG中,而不是转换为矢量图像。
bk138

1
非常感谢您……这正是我想要的……
Dan Ortega

2

我现在刚刚使用gimp效果惊人。我最初使用potrace,但我所得到的只是一张全黑的图像,而且失真很大。也许我没有正确使用它,但是当我尝试使用gimp只是将其导出为“ eps”(file_name.eps)时,一切都完成了。我要做的就是查看它,将分辨率设置为300。就是这样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.