Como converter bitmaps em lote em SVGs?

13

Tenho muitos bitmaps em escala de cinza que preciso converter em um formato vetorial, como SVG. Eu tenho usado o Inkscape, que fornece bons resultados, mas isso leva cerca de 10 a 15 minutos para abrir, converter e salvar um arquivo. Existe um lote ou ferramenta de linha de comando que pode converter estes?

    
por Village 25.01.2014 / 01:46

4 respostas

18

potrace

Encontrei este exemplo em SO em um Q & A intitulado: Como converter uma imagem JPEG em formato SVG usando o ImageMagick? . Uma das respostas sugeriu potrace .

$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg

Resultados

Olhando para o site potrace , aparentemente você pode ir diretamente do BMP para o SVG.

$ potrace -s input.bmp -o output.svg

autotrace

Outra opção para potrace é autotrace .

$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp

Você provavelmente terá que jogar com o --color-count para obter uma imagem que atenda às suas necessidades.

Resultados

Qualusar?

Destesdois,realmentedependedomaterialdeorigem.Sevocêestáconvertendoimagens,entãopotraceéprovavelmenteamelhoropção.Paramateriaisquenãosejamfotos,comofonteseobjetosinanimados,comocenáriosqueincluemcoisascomoestradas,entãoautotracecomsuaopção--centerline.

Whilenotoptimalforphotos,itdoesgoodjobonlineartandposter-likeimages.Doesn'tdotoowellwithcolor.AutotracehassomefeaturesnotavailableintheembeddedPotracedialoginInkscape.Forexample,thereisacenterlineswitchthatisespeciallyusefullfortracingroads(inmaps)orfontcharacters.

Conversõesemlote

VocêpodeagruparumdessescomandosemumloopfornoBash,oquefacilitaráotrabalhodeexecutartarefasdeconversãoemmassa.

$foriin*.bmp;do<CONVERSIONTOOL>..."$i"; done

Referências

por 25.01.2014 / 02:27
9

Autotrace

Você pode tentar o autotrace .

Usando o seguinte comando, você obtém os seguintes resultados:

autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg

Eu tive que fazer uma captura de tela do svg resultante e salvar como png para mostrar a saída.

Aqui está uma imagem de origem jpg:

Aquiestáaimagemresultante:

    
por 25.01.2014 / 02:44
7

Normalmente, eu faço todas as minhas tarefas de manipulação de imagens com convert do ImageMagic, mas não consigo fazê-lo funcionar com arquivos svg. Você pode, no entanto, usar o inkscape a partir da linha de comando:

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

Isso criará arquivos chamados foo.bmp.svg . Para acertar os nomes, tente isto:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

O problema com essa abordagem é que, pelo menos no meu sistema, aparece uma caixa de diálogo gráfica irritante perguntando se eu quero vincular ou incorporar a imagem:

Portanto,vocêaindaprecisaclicaremOKmanualmente,masaindaassimémuitomaisrápidodoquefazerarquivoporarquivo.

Asimagensdesaídasãoidênticas,tantoquantoeupossodizer:

Teoricamente, ambas as convert e rsvg-convert deve ser capaz de fazer isso, mas não consegui que funcionasse bem nas minhas imagens em poucos minutos Eu passei tentando. Ambos vale a pena investigar, no entanto.

    
por 25.01.2014 / 02:50
1

potrace é a ferramenta para isso. Você pode processá-los em massa, mas primeiro é preciso converter as imagens em monocromático:

ls ./*.jpg | xargs -L1 -I {}  convert -monochrome {} {}.ppm
ls -1 ./*.ppm | xargs -L1 -I {} potrace {} -r 300 -b svg -o {}.svg

Instale no Ubuntu:

sudo apt install potrace

Se você deseja converter imagens que não são monocromáticas, Inkscape tem uma base de ferramenta tracer no potrace que suporta várias cores, primeiro converte a imagem em camadas de cores e rastreia essas e combina o resultado.

To use the tracer, load or import an image, select it, and select the Path > Trace Bitmap item, or Shift+Alt+B.

Veja

Tutorial aqui!

    
por 13.02.2018 / 14:56