使用potrace将带有alpha透明度的PNG转换为SVG

5
我将使用potrace来将png文件转换为svg。该png文件是黑色背景透明的,带有alpha透明度级别。我想在svg输出中报告它们。是否可能?
Potrace跳过了alpha透明度并将其变为黑色。
以下是我的命令:
convert -alpha Remove file.png pgm: | potrace --svg -o file.svg

PNG: http://i.imgur.com/d2ZYrf6.png SVG输出(.svg实际为文件格式,但您可以直接查看png结果): http://i.imgur.com/n1NsNYQ.png 谢谢!

1
去除透明度应该是可行的,但也许你之前做错了或者有其他原因。你可以看一下这个链接:http://www.riverrockapps.com/post/convert-white-transparent-png-to-svg - philippe_b
谢谢philippe_b。我之前看过这个页面,但是它没有alpha透明度级别,只有在透明背景上的全白(或黑色)png。 - Lolo
1
我尝试转换了你的图片,只是想看看会发生什么。我现在认为我理解了问题:所有非白色区域变成黑色,而你期望黑色(用于“前景人物”)和灰色(两个“背景人物”)。当我使用自己的图片时,最初获得的是一个全黑的SVG,因此这并不是完全相同的问题。你是否尝试过不同的位图格式?我用PBM格式得到了不同的结果,虽然这不是你想要的。 - philippe_b
2个回答

6

@Lolo. 我认为仅使用 potrace 的管道无法实现您想要的功能。从手册中得知:

在处理开始之前,potrace算法需要一个比特图,因此将输入图像的所有像素转换为黑色或白色。

@philippe_b。我遇到了与您相同的问题,即:

convert foo.png foo.pbm && potrace foo.pbm -s -o foo.svg

我得到了一张全黑的输出图片。顺便说一下,这实际上是在PNG->PBM阶段发生的。我的图片有透明度。以下是我的解决方案:

pngtopnm -mix assign.png > a.pnm && potrace a.pnm -s -o a.svg

这是一段批量执行的脚本。
#!/bin/bash

for src in *.png; do
    name=`basename $src .png`
    pnm="$name.pnm"
    svg="$name.svg"
    pngtopnm -mix $src > $pnm && potrace $pnm -s -o $svg && rm $pnm
    # set colour
    # sed -i "s/#000000/#016b8f/g" *.svg
    # same for PNG
    # mogrify -fill '#016b8f' -opaque black *.png
done

啊啊啊,我在使用Windows 10。用什么工具来转换PNG到PNM格式呢? - Shmack

0

@Paul做得很好,对我很有效。但是你可以再次缩短它,以避免向磁盘写入不必要的文件,就像@Lolo一样:

pngtopnm -mix inputfile.png | potrace --svg -o outputfile.svg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接