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.
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
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.
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.
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.
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:
svg
em seu disco rígido, digamos, somefile.svg
tmp.html
que contenha esta linha: <img src="somefile.svg">
"File -> New from Clipboard"
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.
Se você quiser fazer muitas coisas ao mesmo tempo, você pode:
mogrify -format png *.svg
Existem opções para redimensionar, etc., também.
Experimente o Apache Batik .
java -jar batik-rasterizer.jar FILES
Também suporta conversão em lote e tem muitas outras opções úteis.
Eu fiz svgexport usando o node / npm para isso, ele é multi-plataforma e pode ser tão simples quanto:
svgexport input.svg output.png
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
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.
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
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 ).
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
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
Tags command-line svg png macos