Página principal

Transformando Pixels em Vetores com o Potrace

From CInLUG

Este tutorial é baseado no trabalho conjunto e remoto (via Jabber) de Jesus (o Sanchez) e eu pra dar uma melhorada no mascote de um grupo de pesquisa de segurança (e outros tópicos quentes), que por Requisição Formal Devidamente Solicitada permanecerá anônimo. O mascote é muito legal, mas eles só tinham um jpeg de baixa resolução, que ao ser aumentado pra colocar numa camisa virava um monte de quadrados. Totalmente não legal. E qual é a forma mais legal de se ter uma figura??? Isso mesmo, vetores! Gráficos vetoriais são legais porque podemos esticar e diminuir sem perda de resolução, sem falar em outras alterações que ficam facílimas com vetores. Como ninguém envolvido no processo tinha o mínimo de coordenação motora pra ser desenhista, usamos a ferramenta Potrace[1] (também disponível pra windows). No Debian/Ubuntu você pode instalar o pacote potrace.

Conteúdo

Primeira Tentativa

A figura abaixo está em JPEG, o potrace recebe entradas de formatos bitmap, daí nós usamos o GIMP para convertê-la.

Imagem:Caracol.jpg

Pegamos o bmp da figura a acima e mandamos para o potrace

$ potrace -s caracol.bmp -o caracol1.svg

O parâmetro -s indica conversão para o formato SVG[2], e -o o nome do arquivo de saída.

Caracol1.svg

Caracol1.svg

Como se pode ver, ficou uma porcaria. O que não mencionei foi que o potrace só lida com preto e branco, e cores mais escuras, como a casca do caracol, viram preto.

Removendo as Cores

Podemos usar o GIMP para remover o máximo possível de cores deixar só o contorno.

Imagem:Caracol2.jpg

Damos outro potrace no novo BMP

$ potrace -s caracol2.bmp -o caracol2.svg

Caracol2.svg.png

caracol2.svg

Também tem a ferramenta mkbitmap que vem junto com o potrace, que pode remove as cores automaticamente, mas para obter um bom resultado, os parâmetros corretos devem ser definidos. Vale a pena dar uma olhada no exemplo em:

Inkscape

De volta da linha de comando, nada melhor que o Inkscape[3] pra manipular gráficos vetoriais (e exportar para outros formatos). Tudo que temos de fazer é colocar as cores no caracol.

Imagem:Inkscape.png

ATENÇÃO: O potrace transforma branco e cores claras em transparente, de modo que os globos oculares do caracol SVG ficariam bem psicodélicos sobre um fundo colorido. Isso é resolvido com dois círculos brancos.

Resultado Final

Com o SVG pronto, podemos manipular o caracol sem perda de qualidade.

caracol.final.svg
caracol.final.svg

Adendo

Depois que postei este tutorial descobri que o Inkscape (usando o Potrace) também converte pixels para vetores. Basicamente, importe uma figura em pixels, clique nela, depois vá em Caminho -> Traçar Bitmaps. Existem várias opções, a única que escolhi foi colorido, e o resultado foi um SVG que parecia mais coisa de Andy Warhol[4].

Imagem:Inkscape2.png

Com os ajustes certos e este tutorial (http://www.inkscape.org/doc/tracing/tutorial-tracing.html), podemos chegar ao resultado desejado. Ainda assim, o potrace na linha de comando tem a vantagem de podermos fazer scripts para conversão massiva. Não deixe de visitar o site do potrace e ver exemplos interessantes e instruções mais detalhadas que as apresentadas neste tutorial.

[1] http://potrace.sourceforge.net
[2] http://pt.wikipedia.org/wiki/SVG
[3] http://www.inkscape.org
[4] http://pt.wikipedia.org/wiki/Andy_Warhol

Autor: Marcelo Lira

Imagem:Cc-small.png : Imagem:Cc-by.png Imagem:Cc-sa.png
Atribuição-Compatilhamento pela mesma licença 2.5

Ferramentas pessoais
Vistas