2011-09-16 33 views
21

我有一個SVG格式的標誌圖像,我想知道是否有一種方法來生成多個不同大小的PNG文件。將SVG文件轉換爲多個不同大小的PNG文件

例如,我設置了20個不同的寬度和高度,它會生成20個PNG文件。好吧,如果我必須一次做5張圖片。

我已經安裝了插畫,並無法弄清楚如何做到這一點。

非常感謝您的幫助!

回答

12

我不知道Illustrator,但這應該很容易使用Inkscape command line options。例如,使用Ruby:

$ ruby -e '[10,100,200].each { |x| `inkscape --export-png logo#{x}.png -w #{x} logo.svg` }' 
+0

是,將工作,我發現沒有使用Illustrator這樣做的方式,也失望了我,所以我不得不做手工。 – Mohammad

+4

這使我感到困惑...使用cmd行ruby來調用一個cmd行程序3次...是否有這個瘋狂的名字? –

2

看看inkmake。我實際上只是爲了批量導出SVG文件到不同大小的PNG等工具。這是設計,因爲我想保存在Inkscape中,然後在終端中運行inkmake,它將導出所有依賴的PNG文件。

28

接受的答案很好。有一個official help on options可用。 也基本Shell命令會做很好的位置:

for x in 10 100 200 ; do inkscape --export-png logo${x}.png -w ${x} logo.svg ; done 

在Windows命令行中使用這條線從@avalancha在評論

for %x in (100 200 300) ; do inkscape --export-png logo%x.png -w %x logo.svg ; done 
+2

對於只需要轉換一個文件的人來說,這裏有一個更簡單的複製粘貼:'inkscape --export-png icon.png -w 128 logo.svg' – k0pernikus

+1

對於windows中命令行上的人,使用這個'for%x in (100 200 300); do inkscape --export-png logo%x.png -w%x logo.svg;完成' – avalancha

+0

@avalancha愛它,你的應該是一個在自己的權利 – Alveoli

14

這裏是如何使它更快(3次對我來說對於SSD上僅有5出口)通過推出Inkscape中只有一次,如何導出圖片到不同的目錄(如Android使用):

#!/bin/sh 
# Converts the Inkscape icon file ic_launcher_web.svg to the launcher web & app png files. 

PROJECT="My Project Name" 
INPUT="source-assets/ic_launcher_web.svg" 
MAIN="${PROJECT}/src/main/" 
RES="${MAIN}res/" 
DRAWABLE="${RES}/drawable" 

inkscape --shell <<COMMANDS 
    --export-png "${MAIN}ic_launcher-web.png"   -w 512 "${INPUT}" 
    --export-png "${DRAWABLE}-mdpi/ic_launcher.png" -w 48 "${INPUT}" 
    --export-png "${DRAWABLE}-hdpi/ic_launcher.png" -w 72 "${INPUT}" 
    --export-png "${DRAWABLE}-xhdpi/ic_launcher.png" -w 96 "${INPUT}" 
    --export-png "${DRAWABLE}-xxhdpi/ic_launcher.png" -w 144 "${INPUT}" 
quit 
COMMANDS 

這是一個bash shell的SC RIPT。在Windows上,您可以在MINGW32中運行它(例如GitHub的Git Shell)或將其轉換爲Windows DOS shell腳本。 (對於DOS腳本,你必須改變「這裏的文檔」命令插入到DOS的東西可以處理。見heredoc for Windows batch?的技術,如回聲多行文本到一個臨時文件。)

+0

在哪寫這個命令:S我不明白。 – salih

+1

@salih這個腳本被編寫成運行在類Unix之類的shell中,比如Windows上的MINGW,Mac OSX shell或者Linux shell。 (它可以修改爲在Windows DOS shell或PowerShell中運行。)將此文本保存爲文本文件,例如'export.sh'。運行命令'chmod ug + x export.sh'將腳本標記爲「可執行文件」。然後,無論何時想要以多種尺寸導出SVG圖像,如果腳本位於當前目錄中,則通過'./ export.sh'運行腳本,或者如果腳本位於PATH中,則只需'export.sh'。 – Jerry101

+0

感謝您的好解釋 – salih

2

如果您還沒有已經安裝imagemagick。在OSX,需要rsvg支持具體包括:

brew install imagemagick --with-librsvg 

您還需要Inkscape的,否則你可能會發現,你的圖像打印出來全黑的(除了透明區域)。

brew install homebrew/gui/inkscape 

然後,你應該能夠轉換如下:

convert -density 1536 -background none -resize 100x100 input.svg output-100.png 

1536的東西是我不能找到很好的答案,以一種變通方法。在我的實驗中,省略參數-density會創建非常小的圖像。將圖像轉換爲-size 100x100-density 1024爲我提供了一個96x96的輸出圖像,所以我正在做的是在密度上超調並調整到目標大小。

TL; DR使用比您的目標尺寸大1500倍的密度,並從那裏開始。

批量運行該命令有很多種方法。這是一個在shell:

for s in 10 100 200 ; do convert -density 1536 -background none -resize ${s}x${s} input.svg output-${s}.png ; done 
相關問題