Estou no Linux e gostaria de pegar um arquivo SVG e transformá-lo em um arquivo PNG em uma determinada resolução (dimensionamento). Existe uma maneira de fazer isso de maneira rápida e eficaz a partir da linha de comando?
Estou procurando algo parecido com isto:
Existe uma ferramenta para isso?
Use o conversor do ImageMagick :
Se o tamanho da tela de entrada for menor que o tamanho especificado, isso aumentará a escala da saída sem nova amostragem. Para obter um resultado de qualidade superior, adicione o -densityparâmetro:
As imagens do Rastreio do ImageMagick vectoriam imagens para sua resolução de tela com uma densidade padrão de 72 dpi.
Para aumentar a escala com a amostragem adequada, você pode especificar um valor acima do normal, como 500 dpi na amostra acima.
Usar uma densidade de varredura muito alta pode ser um problema de desempenho em telas de tamanho grande. A densidade raster mais baixa e ideal é: raster_density = raster_size / original_size * original_density
Essa densidade raster ideal produzirá a imagem diretamente no tamanho esperado (não é -resizenecessário). Porém, como podem ocorrer aproximações do número flutuante, um valor ligeiramente mais alto e um redimensionamento são recomendados para obter resultados perfeitos em pixels.
Você pode obter o tamanho e a densidade originais usando as porcentagens de escape do ImageMagick :
Observe que o ImageMagick não lida com as especificações completas do SVG. Se tiver problemas com as formas renderizadas incorretamente, consulte este tópico sobre a seleção do renderizador ImageMagick SVG .
Incrível, obrigado. Encontrei rsvga resposta abaixo por conta própria, mas é hora de começar a usar o ImageMagick.
Não funcionou para minha imagem svg. No começo, recebi convert: unable to read font os erros (nulo) '@ error / annotate.c / RenderFreetype / 1153`` pelos quais eu resolvi brew install gs, mas mesmo quando o convert era executado de forma limpa, a imagem resultante era lixo.
— Lloyd Dewolf 27/02
@LloydDewolf, você pode tentar limpar o svg primeiro.
— Mihai Rotaru 27/02
Eu tive que adicionar -background transparent, caso contrário, converter usa fundo branco.
(isso se aplica ao linux, pode ser aplicado ao windows) se você ativar o verbose no IM, parece que o próprio IM usa o inkscape para criar um arquivo eps intermediário. Portanto, eu sugiro usar o Inkscape diretamente com: inkscape in.svg --export-png=out.png(exemplo de superuser.com/a/493028/316154 )
Ambos rsvge inkscapepodem:
Eu estava tendo problemas sem fim com o Imagemagick. Não tinha idéia de que eu poderia usar o rsvg diretamente (o binário era chamado de rsvg-convert no meu caso no Mac Homebrew) e isso está funcionando de maneira fantástica. Obrigado.
O uso do inkscape contornou um problema que eu estava tendo com o imagemagick - a conversão SVG -> PNG usando o imagemagick cortou a caixa delimitadora invisível da imagem (usada para preservar as dimensões relativas e centralizadas), mas o inkscape funcionou bem. Muito Obrigado!