2015-09-25 103 views
3

我使用potrace將png文件轉換爲svg。 PNG是透明背景上的黑色,具有透明度級別。我想在svg輸出中報告它們。可能嗎 ?Potrace跳過alpha透明並將其變成黑色。PNG與alpha透明SVG與potrace

這裏是我的命令:

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 –

+0

謝謝philippe_b。我之前看過這個頁面,但沒有透明度級別,它只有透明背景上的全白(或黑色)PNG。 – Lolo

+1

我試圖轉換你的照片,只是爲了看看會發生什麼。我想現在我明白了這個問題:所有非白色區域都變成黑色,而你期望黑色(對於「前景男人」)和灰色(對於兩個「背景男人」)。我最初用我自己的照片得到的是一個*全黑* SVG,所以這畢竟不是同一個問題。你有沒有嘗試不同的位圖格式?我用PBM格式獲得了一些不同,儘管這不是你想要的。 –

回答

4

@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