我建議在PowerShell中的Inkscape的一個小腳本寫。
例子:
把Inkscape中在 「C:\ BIN \ Inkscape中」(DIR沒有任何空間),並畫出所有的圖像在MDPI(1X)的分辨率。
在Inkscape對象屬性框中(即id在xml中),給出你想要在png中導出的每個對象的Id名稱。
將您的SVG保存爲「C:\ users \ rone \ Pictures \ design-MyApps-forscript」。SVG」
創建目錄 「d:」
,並把這個腳本在 「\ TEMP C:\程序\腳本\」
PowerShell腳本的名稱是 「inkscape_to_png.ps1」 :
param (
$inkscape_dir="C:\bin\Inkscape\",
$inkscape_bin="inkscape.exe",
$img_id="",
$fichier_svg="C:\Users\rone\Pictures\design-MyMap-forscript.svg",
$tmp_dir="d:\temp\"
)
$inkscape=$(Resolve-Path "$inkscape_dir\$inkscape_bin")
function getWidthHeight($img_id) {
[email protected]{}
$old_pwd=$pwd.path
cd $inkscape_dir
write-host -foreground yellow "détermine la taille de $img_id"
$size.width=invoke-command {./inkscape --file=$fichier_svg --query-id=$img_id --query-width 2>$null}
$size.height=invoke-command {./inkscape --file=$fichier_svg --query-id=$img_id --query-height 2>$null}
write-host -foreground yellow "width : $($size.width)"
write-host -foreground yellow "height : $($size.height)"
cd $old_pwd
return $size
}
function convertTo($size, $format) {
[email protected]{}
if ($format -eq "MDPI") {
$rsize.width=[int]$size.width*1
$rsize.height=[int]$size.height*1
} elseif ($format -eq "LDPI") {
$rsize.width=[int]$size.width*0.75
$rsize.height=[int]$size.height*0.75
} elseif ($format -eq "HDPI") {
$rsize.width=[int]$size.width*1.5
$rsize.height=[int]$size.height*1.5
} elseif ($format -eq "XHDPI") {
$rsize.width=[int]$size.width*2
$rsize.height=[int]$size.height*2
} elseif ($format -eq "XXHDPI") {
$rsize.width=[int]$size.width*3
$rsize.height=[int]$size.height*3
} elseif ($format -eq "XXXHDPI") {
$rsize.width=[int]$size.width*4
$rsize.height=[int]$size.height*4
}
write-host -foreground yellow "après conversion : $format"
write-host -foreground yellow "width : $($rsize.width)"
write-host -foreground yellow "height : $($rsize.height)"
return $rsize
}
function inkscape_convert() {
$mdpi_size=getWidthHeight $img_id
write-host -foreground gray "----------------------------------------"
"MDPI,LDPI,HDPI,XHDPI,XXHDPI,XXXHDPI" -split ","|% {
$new_size=convertTo $mdpi_size $_
if ($new_size.width -eq 0 -or $new_size.height -eq 0) {
write-host -foreground red "erreur lors de la recherche de la taille de l'image"
exit
}
$w=$new_size.width
$h=$new_size.height
$dir="$tmp_dir\drawable-$($_.toLower())"
if (-not $(test-path $dir)) {
write-host -foreground yellow "création du répertoire $dir"
mkdir $dir
}
$new_file_name="$dir\$($img_id).png"
$cmd="$inkscape -z -i $img_id -j -f $fichier_svg -w $w -h $h -e $new_file_name"
write-host -foreground gray $cmd
invoke-expression -command $cmd
if ($? -eq $true) {
write-host -foreground yellow "conversion OK"
}
}
write-host -foreground gray "----------------------------------------"
}
inkscape_convert
現在
,調用此腳本這個例子:
@("btn_button_name_1","btn_button_name_3","btn_other", "btn_zoom", "btn_dezoom", "btn_center", "btn_wouwou", "im_abcdef", "ic_half", "ic_star", "ic_full") | % { C:\app\scripts\inkscape_to_png.ps1 -img $_ -f design-MyMap-forscript.svg }
和腳本將創建在d所有決議案(LDPI,MDPI,華電國際,xhdpi,xxhdpi,xxxhdpi)所有可繪:\ TEMP \繪製-XYZ ...
因此,一個舒適的節省時間。
對於自動生成生成不同大小請看:http://stackoverflow.com/a/18516508/237858 – kape123
使用這個android資源工作室http://romannurik.github.io/AndroidAssetStudio/通過Roman Nurik設計drawable適用於所有尺寸..喜歡 – goonerDroid
我已經制作了一個簡單的java應用程序,可以自動調整圖像大小。最好的事情是,你不必解壓縮任何zip文件,並手動將生成的文件複製到res文件夾。您只需選擇res文件夾作爲輸出,並且所有分辨率下的所有圖像都將生成到正確的子文件夾。 你可以在這裏下載應用程序:https://github.com/kaladivo/android-icon-generator –