Aplicativo de linha de comando para converter SVG em PNG no Mac OS X

139

Existe algum programa de linha de comando que possa converter um SVG em PNG, executado no Mac OS X?

Editar : Dylan B teve uma boa resposta com o ImageMagick. Para referência, para instalar o ImageMagick com suporte a SVG no Mac OS X usando MacPorts, faça

port install imagemagick +rsvg
    
por Lorin Hochstein 26.04.2010 / 03:53

14 respostas

192

Ou sem instalar nada:

qlmanage -t -s 1000 -o . picture.svg 

Produzirá picture.svg.png com uma largura de 1000 pixels.

Eu testei apenas no OS X 10.6.3.

    
por 17.05.2010 / 15:32
80

Descobri que, para mim, a melhor ferramenta para o trabalho é rsvg-convert .

Ele pode ser encontrado no brew com brew install librsvg e é usado assim:

rsvg-convert -h 32 icon.svg > icon-32.png

(Este exemplo cria um png alto de 32px. A largura é determinada automaticamente.

    
por 28.02.2014 / 21:47
36

O ImageMagick é um extremamente versátil editor de imagens de linha de comando , que provavelmente rivalizaria com o Photoshop se tivesse, você sabe, uma GUI. Mas quem precisa disso de qualquer maneira. : P

Algo como o seguinte iria converter um .svg para .png, após a instalação:

$ convert picture.svg picture.png

O arquivo .svg original não foi excluído.

    
por 26.04.2010 / 04:00
27
O

Inkscape com o seu interface de linha de comando produz os melhores resultados para mim:

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

Ainda bem, você pode especificar o tamanho exato do pixel da imagem resultante, sem ter que mexer com a densidade.

    
por 05.01.2013 / 14:04
12

OK, encontrei uma maneira simples de fazer isso no Mac se você tiver o Google Chrome.

Em uma frase, é para ver a imagem svg em uma página da web (deve estar em um arquivo html ), clique com o botão direito na imagem e escolha "Copiar Imagem" e cole no aplicativo Pré-Visualização.

Etapas:

  1. Faça o download ou tenha o arquivo svg em seu disco rígido, digamos, somefile.svg
  2. Agora, na mesma pasta, basta criar um arquivo html tmp.html que contenha esta linha: <img src="somefile.svg">
  3. Agora, abra esse arquivo html no Google Chrome
  4. Você deve ver a imagem. Agora, clique com o botão direito na imagem e escolha "Copiar Imagem"
  5. Acesse o aplicativo de visualização do Mac e escolha, "File -> New from Clipboard"
  6. Agora, File -> Save do arquivo e você tem o arquivo png . (ou outros tipos de arquivos).

Isso é testado no atual Chrome (versão 48.0) no Mac OS X El Capitan.

Atualizar : não tenho certeza se é devido a alguma restrição imposta pelo Google Chrome. Eu apenas experimento um arquivo SVG usando o Chrome 58.0 e recebo uma imagem minúscula do método acima. Se você ver este caso também, você também pode usar

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">

e você terá uma imagem na tela boa o suficiente para você fazer uma captura de tela - usando Cmd Deslocamento 4 ou Cmd Desloca 3 no Mac, por exemplo. Certifique-se de redimensionar a janela do Chrome para o tamanho máximo permitido na tela.

    
por 07.02.2016 / 20:02
5

Se você quiser fazer muitas coisas ao mesmo tempo, você pode:

mogrify -format png *.svg

Existem opções para redimensionar, etc., também.

    
por 10.04.2011 / 16:12
3

Experimente o Apache Batik .

java -jar batik-rasterizer.jar FILES

Também suporta conversão em lote e tem muitas outras opções úteis.

    
por 23.05.2013 / 05:05
3

Eu fiz svgexport usando o node / npm para isso, ele é multi-plataforma e pode ser tão simples quanto:

svgexport input.svg output.png
    
por 27.09.2014 / 10:47
2

Você também pode usar phantomjs para renderizar o svg. A vantagem é que ele renderiza como um navegador, já que é basicamente um WebKit sem cabeçalho.

Depois de baixá-lo, você precisará do phantomjs (binário) e do arquivo rasterizer.js da pasta de exemplos.

phantomjs examples/rasterize.js Tiger.svg out.png
    
por 19.03.2017 / 17:18
1

Eu uso este comando no meu linux. Deve funcionar para você também.

mogrify +antialias -density 2000 -verbose -format png *.svg

Aprendi que sem o argumento "-densidade", o bitmap seria muito pixelizado. Altere o valor de -densidade para atender sua necessidade.

    
por 05.09.2011 / 10:20
1

O comando de conversão do ImageMagick, usando alguns outros parâmetros, é o que fez para mim. Aqui está minha solução de script Bash em lote que divide a tarefa em vários processos para fazer uso de todos os seus núcleos! Modifique conforme necessário.

batchConvertToSVG.sh (recebe o número de processos como argumento):

end=$(( $1 - 1 ))
for i in 'seq 0 $end';
        do
            echo Spawning helper $i of $end
                ./convertToSvgHelper.sh $i $1 &
        done 

convertToSvgHelper.sh:

n=$1
for file in ./*.svg; do
   filename=${file%.svg}
   echo converting file named $filename
   test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
   n=$((n+1))
   n=$((n%$2))
done
    
por 26.06.2015 / 04:48
0

Como comentado anteriormente, o ImageMagick faz o truque. Eu só queria adicionar um ponto para GraphicsMagick , um fork antigo do ImageMagick que tem algumas melhorias (e muito menos inchaço quando instalado via fink ).

    
por 26.04.2010 / 21:16
0

Você pode realizar uma conversão em lote em uma pasta inteira de arquivos SVG para PNG. Eu usei a interface de linha de comando do Inkscape para produzir arquivos png com uma largura de 80px.

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

png será salvo com o nome original * .png

    
por 02.05.2014 / 20:25
-2

sips - sistema de processamento de imagens com scripts . Não são necessários binários externos.

sips -s format png mypdf.pdf --out myimage.png

Aqui está um script que uso depois de uma sessão de capturas de tela.

PWD='pwd'
IMAGES='ls "$PWD"/*.tiff'
TARGET=png
for IMAGE in $IMAGES
do
  SOURCE="$IMAGE"
  DESTINATION='echo "$SOURCE" | sed "s/tiff/$TARGET/g"'
  sips -s format "$TARGET" "$SOURCE" --out "$DESTINATION" &2>/dev/null
done
    
por 05.01.2013 / 09:06