2

This seems quite similar to How to get rid of these outline artifacts in an Inkscape SVG trace? but I thought asking again would be helpful since it seems that at least the preview does not have the issue.

The source file is a 160x160 bitmap of the smiling face with halo emoji, Apple's version.

Smiling Face with Halo

I imported this into Inkscape 0.92 (on Ubuntu 18.04) and used Path --> Trace Bitmap on the imported raster image object. The preview and final result are this:

Inkscape Screenshot

Notice how the preview looks perfectly fine, but the final result has these outline artifacts, interrupting the smooth and continuous color gradients. The thing is, the preview looks fine and has the smooth and continuous color gradients, unlike the final trace. And yes, the preview is actually of the final trace, I checked this by adjusting other settings and yes, the preview changes as it should.

Is this an Inkscape issue? Or perhaps a quick fix in inkscape to make the final trace look like the preview? I'm not sure, but it seems like I'm missing something obvious.

Thanks for the help!

Final trace result: link (please download first and open in your browser, the drive preview isn't accurate)

3
  • Isn't it just because the borders of objects get drawn? That is, if you export to SVG and view it in a browser, do these lines also appear? (If they do, they must be defined in the SVG.)
    – Jongware
    Dec 24, 2018 at 1:27
  • Oh, I should add the final svg trace... sorry! I'll edit it on the question. Dec 24, 2018 at 1:54
  • 1
    It seems that viewing the final SVG on a browser (chromium or firefox) or using Ubuntu's default image viewer makes no difference... the outlines remain exactly the same. Dec 24, 2018 at 3:02

2 Answers 2

1

Unfortunately tracing is not smart enough to detect gradient parameters. 256 discrete color palette isn't a proper replacement. Your attempt has no possiblities to be succesfull, if you want a sharp freely scalable vector. The tracing result can be acceptable only in a small size where antialiasing partially blurs the borders between the colors.

To get a sharp freely scalable vector you must redraw it. That's not easy because the image is complex. The complex part is the coloring, basic outlines are simple. If you can accept some inaccuracy, you can crunch together something resembling quite easily. An example:

enter image description here

Basic outlines were drawn on the original PNG image (= left). Shadings in the mouth, blue ring and eyes are blurred shapes and curves. Large surfaces have gradients as the basis.

There's another answer which says "check, if you can legally make your own version and use it". That suggestion should be taken seriously. The copyright owner can file a lawsuit and take a substantial sum of money if he finds it's possible.

Some resembling vector images are available for free. Perhaps you can use them as is or modified. Check for ex. this: https://www.123freevectors.com/smiling-face-with-halo-emoji-vector-download-85420/ . It's unfortunately EPS and Inkscape does not accept it. EPS to SVG conversion is complex. I haven't found a reliable way to do it with freeware.

ADD: some tests revealed that grayscale tracing is much smoother because discrete steps present gradients ok. That gives one possiblity: Trace separately R,G and B components of the image and combine the results. Unfortunately in Inkscape there's not available blending mode =ADD.

I tested it in other software. It worked, but the result wasn't sharp, it was just as blurry as you will get when you upscale the original low res bitmap

4
  • Why would an approximation of a gradient show darker outlines? It seems unrelated to me.
    – Jongware
    Dec 25, 2018 at 13:40
  • @usr2564301 Inkscape displays the seams between colored areas partially transparent. That's anti-aliasing. Rounding errors can create some real gaps. Both cause underlying colors can be seen through. One pixel wide overlap fixes it. Adding a stroke with the same color as the fill is one way to create the overlap. Or having offset paths. I do not know any fully automatic method to create them
    – user82991
    Dec 25, 2018 at 15:46
  • I manually edited the SVG and added a stroke width (much) larger than the one in the file, and also set the color to the same color as its fill – a couple of variations, and with and without stroke-opacity. They all still display with the same visible outlines, so that's not a solution, alas. But why would this not show on every image, then?
    – Jongware
    Dec 27, 2018 at 14:54
  • @usr2564301 now this appears to be a real puzzle. Can you insert a link to the SVG with inserted strokes?
    – user82991
    Dec 27, 2018 at 20:09
0

This is due to the scans' borders being imprecisely aligned, and due to aliasing/antialiasing.

For the scan, use the 'smooth' option, and deactivate optimizations, to make it more exact.

If you uncheck the 'stack scans' option for the tracing, the lines in between the objects will be white (or rather, transparent) instead of blue, if that's better.

The white can then be reduced by duplicating the object in place. You may need to repeat that a couple of times.

If this is not for private use, I would check the license on the Apple emoticon first, before going about modifying it.

As the icon isn't so very complicated, I'd actually suggest to redraw (if allowed).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.