我有一個SVG格式的標誌圖像,我想知道是否有一種方法來生成多個不同大小的PNG文件。將SVG文件轉換爲多個不同大小的PNG文件
例如,我設置了20個不同的寬度和高度,它會生成20個PNG文件。好吧,如果我必須一次做5張圖片。
我已經安裝了插畫,並無法弄清楚如何做到這一點。
非常感謝您的幫助!
我有一個SVG格式的標誌圖像,我想知道是否有一種方法來生成多個不同大小的PNG文件。將SVG文件轉換爲多個不同大小的PNG文件
例如,我設置了20個不同的寬度和高度,它會生成20個PNG文件。好吧,如果我必須一次做5張圖片。
我已經安裝了插畫,並無法弄清楚如何做到這一點。
非常感謝您的幫助!
我不知道Illustrator,但這應該很容易使用Inkscape command line options。例如,使用Ruby:
$ ruby -e '[10,100,200].each { |x| `inkscape --export-png logo#{x}.png -w #{x} logo.svg` }'
看看inkmake。我實際上只是爲了批量導出SVG文件到不同大小的PNG等工具。這是設計,因爲我想保存在Inkscape中,然後在終端中運行inkmake
,它將導出所有依賴的PNG文件。
接受的答案很好。有一個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
對於只需要轉換一個文件的人來說,這裏有一個更簡單的複製粘貼:'inkscape --export-png icon.png -w 128 logo.svg' – k0pernikus
對於windows中命令行上的人,使用這個'for%x in (100 200 300); do inkscape --export-png logo%x.png -w%x logo.svg;完成' – avalancha
@avalancha愛它,你的應該是一個在自己的權利 – Alveoli
這裏是如何使它更快(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?的技術,如回聲多行文本到一個臨時文件。)
在哪寫這個命令:S我不明白。 – salih
@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
感謝您的好解釋 – salih
如果您還沒有已經安裝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
是,將工作,我發現沒有使用Illustrator這樣做的方式,也失望了我,所以我不得不做手工。 – Mohammad
這使我感到困惑...使用cmd行ruby來調用一個cmd行程序3次...是否有這個瘋狂的名字? –