PowerShellでPNGファイルをBMPファイルに変換するには
ImageMagickで作成した BMP ファイルがautotraceで読めないことが分かりで作成することにしました
Error reading BMP file header
画像の形式を変えることができるのでやってみてくださいjpg など
Image クラス (System.Drawing) | Microsoft Learn
バッチファイル
echo e %*
::@pwsh -NoProfile -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 -Encoding Shift-JIS | Where-Object {$_.readcount -gt 9}| Out-String )+ '}'))" %*
::
@powershell -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 | Where-Object {$_.readcount -gt 9}| Out-String )+ '}'))" %*
timeout /t 55&goto:eof
# 必要なアセンブリを追加
Add-Type -AssemblyName System.Drawing
# 変換元のファイルパス
$srcFilePath = "C:\path\to\your\image.png"
# 変換先のファイルパス
$destFilePath = "C:\path\to\your\image.bmp"
# PNGファイルを読み込む
$srcImage = [System.Drawing.Image]::FromFile($srcFilePath)
# BMPファイルとして保存
$srcImage.Save($destFilePath, [System.Drawing.Imaging.ImageFormat]::Bmp)
# メモリを解放
$srcImage.Dispose()
複数ファイル対応
echo e %*
::@pwsh -NoProfile -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 -Encoding Shift-JIS | Where-Object {$_.readcount -gt 9}| Out-String )+ '}'))" %*
::
@powershell -Command "& (Invoke-Expression -Command ('{' + (Get-Content %~f0 | Where-Object {$_.readcount -gt 9}| Out-String )+ '}'))" %*
timeout /t 55&goto:eof
# 必要なアセンブリを追加
Add-Type -AssemblyName System.Drawing
# 変換元フォルダパス
$srcFolderPath = "C:\path\to\your\source\folder"
# 変換先フォルダパス
$destFolderPath = "C:\path\to\your\destination\folder"
# 変換元フォルダ内のすべてのPNGファイルを取得
$pngFiles = Get-ChildItem -Path $srcFolderPath -Filter "*.png"
foreach ($file in $pngFiles) {
# 変換元ファイルのフルパス
$srcFilePath = $file.FullName
# 変換先ファイルのフルパス(拡張子をbmpに変更)
$destFilePath = [System.IO.Path]::ChangeExtension([System.IO.Path]::Combine($destFolderPath, $file.Name), ".bmp")
# PNGファイルを読み込む
$srcImage = [System.Drawing.Image]::FromFile($srcFilePath)
# BMPファイルとして保存
$srcImage.Save($destFilePath, [System.Drawing.Imaging.ImageFormat]::Bmp)
# メモリを解放
$srcImage.Dispose()
}
Write-Host "すべてのPNGファイルがBMPファイルに変換されました。"
autotrace
for /r y:\output_png %%f in (*.png) do (
rem
rem "C:\app\ImageMagick\convert.exe" "%%f" -strip -flatten y:\input_png\%%~nf.bmp
powershell -command "Add-Type -AssemblyName System.Drawing;$img =[System.Drawing.Image]::FromFile('%%f');$img.Save('y:\input_png\%%~nf.bmp', [System.Drawing.Imaging.ImageFormat]::Bmp) "
rem "C:\app\potrace\potrace.exe" y:\input_png\%%~nf.bmp -o y:\input_png\%%~nf.svg --svg --flat --width=500 --opttolerance 0.2 --alphamax 1.4 --blacklevel 0.5
"C:\app\AutoTrace\autotrace.exe" --report-progress --input-format bmp --output-format svg --output-file "y:\input_png\%%~nf.svg" "y:\input_png\%%~nf.bmp"
del y:\input_png\%%~nf.bmp
)
ディスカッション
コメント一覧
まだ、コメントがありません