I'd like to be able to crop SVG chemical structures, completely (see this question), that were created using MarvinSketch and I think I might have thought of a solution; I use MarvinSketch to create a large PNG file, then crop that using GIMP, and then convert the PNG to SVG. Hence I'd like to know if anybody knows a free software I can install (I don't like using online converters as I'm always suspicious of malware) on Ubuntu for high quality PNG->SVG conversion.
5 Answers
Inkscape has got an awesome auto-tracing tool.
- Install Inkscape using
sudo apt-get install inkscape
- Import your image
- Select your image
- From the menu bar, select Path > Trace Bitmap Item
- Adjust the tracing parameters as needed
Check their tracing tutorial for more information.
Once you are comfortable with the tracing options. You can automate it by using CLI of Inkscape.
-
6+1, Thank you. Happy to hear that Inkscape has integrated
potrace
functionality in the GUI as stated in the reference you mention.– user.dzJan 3, 2016 at 19:26 -
5This is the correct answer as potrace does not support .png import, and it's easy to get into difficulties with transparency etc with conversions. May 4, 2017 at 11:10
-
1
-
-
@dmak2709 you can either use the CLI of Inkscape and control it via a script, or check the options listed here: graphicdesign.stackexchange.com/questions/54384/… and graphicdesign.stackexchange.com/questions/37045/… Apr 23, 2020 at 19:16
So you are looking for raster to vector graphics converter/tracer. potrace
& autotrace
both are in Ubuntu repository. Myself I tried potrace
before which gave nice results with default options. As I remember, both tools do not support compressed formats as input, only bitmap images.
See Potrace examples
Potrace: utility to transform bitmaps into vector graphics
potrace is a utility for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image. The input is a bitmap (PBM, PGM, PPM, or BMP format), and the default output is an encapsulated PostScript file (EPS). A typical use is to create EPS files from scanned data, such as company or university logos, handwritten notes, etc. The resulting image is not "jaggy" like a bitmap, but smooth. It can then be rendered at any resolution.
Command:
potrace -s inputfile
AutoTrace: bitmap to vector graphics converter
AutoTrace is a program for converting bitmaps to vector graphics. The aim of the AutoTrace project is the development of a freely-available application similar to CorelTrace or Adobe Streamline. In some aspects it is already better. Originally created as a plugin for the GIMP, AutoTrace is now a standalone program.
Command:
autotrace -output-format svg inputfile
References:
man potrace
man autotrace
Update
There are more GUI that added tracing feature, like Gimp & Inkscape. See Hussein El Motayam's answer.
Here also Wikipedia: Comparison of raster-to-vector conversion software, not every tool. To anyone interested in comparing results, I would like to ask reporting results to free open source tools so they can ameliorate.
-
1I ran
autotrace -vector svg inputfile
(after changing inputfile to fenfluramine.png) and it didn't work, I also changed the output-format to svg didn't work. I have installed it. May 23, 2014 at 1:40 -
1I ran
potrace -s inputfile
(with the inputfile being fenfluramine.png again) and it gave me this error:potrace: /home/fusion809/Documents/Chem Structures/Fenfluramine.png: file format not recognized Possible input file formats are: pnm (pbm, pgm, ppm), bmp.
May 23, 2014 at 1:46 -
1@BrentonHorne, you should create PNM or BMP image instead of PNG. both tools do not support compressed formats as input (PNG, JPEG...), only Bitmap images (PNM, BMP,...). If you can't export other then PNG then try convert them 1st to BMP.– user.dzMay 23, 2014 at 3:08
-
1Well then you didn't answer my question. MarvinSketch can export to BMP but its background isn't transparent which is why I suggested the format PNG in the first place. It can't do PNM. May 23, 2014 at 7:23
-
3Aha, it did work. Thanks. I thought as the BMP wasn't transparent any result wouldn't be too. May 23, 2014 at 11:05
Use the convert
command in the terminal :
For example:
convert EXAMPLE.png EXAMPLE.svg
Here's some info from the manpage:
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
-
21This embeds a raster image in the SVG instead of converting to a vector image.– bk138May 5, 2019 at 12:28
-
1
-
4
convert
doesnt changes a raster image to vector, it simply embeds it. So perhaps not a good choise Apr 28, 2020 at 19:41
I found VTracer
It is open source and there is an online converter.
The source code is at Github: https://github.com/visioncortex/vtracer
I just have used gimp right now with amazing results. I first used potrace but all I got was an image all in black with a lot of distortion. Maybe I didn't used it properly but when I tried with gimp just exporting as "eps" (file_name.eps), it was all done. All I have to do was review it setting the resolution with a value of 300. That's it.
-
That really doesn't convert it to a vector image. You can see that the resulting files are too big to be using only vectors; you can look inside the eps resulting files, there are bitmap images there.– GantonApr 2, 2022 at 20:05
`#{INKSCAPE_PATH} -z -f #{Guanidine.png} -w #{width} -j -e #{Guanidine.svg}
cd ~/Documents/Chem Structures/
which is the directory in which the files are.echo "$picture" | sed 's/\.\w*$/.png/'
/usr/bin/convert "$picture" png:"$png_file" shift done in ~/.local/share/nautilus/scripts and remember to make it executable then just right click then scrips then what ever you save this script undersudo apt-get install imagemagick
convert
command is even worse: It places a circle for every pixel of the pixel graphics, what leads to very large file sizes. I'd therefore try to directly cut the SVG file.