svg 変換ツール
inkscape という OSS ツールを使うと、svg から png など様々なタイプに変換することができます。
inkscape のサイトはこちらです。
この記事では、このサイトを活用して一括変換できるようにする内容となっています。
インストール
inkscape を公式サイトから、ダウンロードすることができます。スクリプトを実行するには、まずインストールしておいてください。
※ 後記の一括返還のスクリプトはデフォルトのインストール先を前提で書いているので、カスタマイズインストールした場合、合わせて修正していただければと思います。
また、コマンドでインストールする場合、以下のスクリプトをご参考ください。
# inkscape インストール。※ 管理者で実行してください。
# ダウンロード先の URL に書き換えてください
$installerUrl="https://inkscape.org/gallery/item/29350/inkscape-1.1.1_2021-09-20_3bf5ae0d25-x64.msi"
if( Get-WmiObject Win32_Product | Where-Object Name -eq "Inkscape" ){
Write-Host "inkscape has installed."
}else{
if (Test-Path "c:\inkscape_install_temp"){
Write-Host "start to download inkscape..."
if(Test-Path "c:\inkscape_install_temp\inkscape.msi"){
Write-Host "inkscape has been downloaded."
}else{
cd "c:\inkscape_install_temp"
Invoke-WebRequest $installerUrl -OutFile "inkscape.msi"
}
}else{
New-Item "c:\inkscape_install_temp" -ItemType Directory
cd "c:\inkscape_install_temp"
Invoke-WebRequest $installerUrl -OutFile "inkscape.msi"
}
Write-Host "install inkscape..."
Start-Process c:\inkscape_install_temp\inkscape.msi -ArgumentList '/quiet' -Wait
}
一括で変換するスクリプト
インストールが終わりましたら、以下のスクリプトの $sourceFilesDir
を svg 格納のディレクトリに書き換えて、実行すると、ディレクトリ配下のすべての svg
が png
に変換されます。
仕様について:
- 変換後のファイルはソースファイルと同じフォルダに保存されます
- 変換後のファイル名は、ソースファイル名の後ろに
.png
が付く形になります - 指定のディレクトリのサブディレクトリのファイルも変換対象になります
- 300 dpi の png に変換されます
- 実行時に、ファイルごとにウィンドウズが
# svg が入っている ディレクトリで書き換えてください。
$sourceFilesDir = "<ディレクトリ パス>"
# inkscape インストール先をしてした場合、書き換えてください。
$Inkscape = "$env:ProgramFiles\inkscape\bin\inkscape.com"
$sourceFiles = Get-ChildItem -Recurse -File -Include *.svg -Path $sourceFilesDir
foreach ($sourceFile in $sourceFiles) {
Write-Host $sourceFile.VersionInfo.FileName
$sourceFilePath = $sourceFile.VersionInfo.FileName
$destFilePath = $sourceFilePath + ".png"
Write-Host $destFilePath
# 300 dpi の png に変換するようにオプションを指定している
Start-Process -WindowStyle Hidden -FilePath "$env:ProgramFiles\inkscape\bin\inkscape.com" -ArgumentList "$sourceFilePath", "--export-filename", "$destFilePath", "--export-type", "png", "--export-dpi", "300"
}
参考:
- https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7.2
- https://inkscape.org/doc/inkscape-man.html#EXAMPLES
最後に
あくまで仕事上で、Azure の Icon を png にしたいから作ったシンプルなものなので、動作はしますが、エラー処理などは入れていません。ご了承ください。
コメント