CMD批量转换GIF图片为PNG图片

CMD批量转换GIF图片为PNG图片

前言

某天需要批量将GIF图转为PNG格式,又不想找其他工具,于是写了一个powershell脚本,再套个CMD的壳,双击即可运行,完美。

正文

话不多说,将以下代码另存为转换GIF到PNG.bat文件,放到与GIF同级目录,双击运行即可。

@echo off
cd /d %~dp0
powershell.exe -command "$path=(Get-Location).Path;$gifs=dir -Path $path -Filter '*.gif';if($gifs){ $newPath=$gifs[0].DirectoryName+'\PNG';if(-not (Test-Path $newPath)){mkdir $newPath|Out-Null;};foreach($g in $gifs){ $bf=[System.Drawing.Bitmap]::FromFile($g.fullName);$newFileName=$newPath+'\'+$g.BaseName+'.png';$bf.Save($newFileName,[System.Drawing.Imaging.ImageFormat]::Png);$bf.Dispose();}Write-Host ('共'+$gifs.Count+'个,转换完成...');}else{Write-Host '当前目录没有找到任何GIF文件!';}"
pause

转换操作如图:
《CMD批量转换GIF图片为PNG图片》

说明

  • 操作系统需 Win 7 或更高
  • 运行后会在同级目录生成PNG子文件夹,转换后的PNG图片都放在里面
  • 暂不支持递归子目录查找GIF,只对当前目录GIF图片有效

后来想了一想,还是弄一个支持递归子目录的好一点,于是改了一下:

@echo off
cd /d %~dp0
powershell.exe -command "$path=(Get-Location).Path;$gifs=dir -Path $path -Filter '*.gif' -Recurse;if($gifs){foreach($g in $gifs){ $bf=[System.Drawing.Bitmap]::FromFile($g.fullName);$newPath=$g.DirectoryName+'\PNG';if(-not (Test-Path $newPath)){mkdir $newPath|Out-Null;};$newFileName=$newPath+'\'+$g.BaseName+'.png';$bf.Save($newFileName,[System.Drawing.Imaging.ImageFormat]::Png);$bf.Dispose();}Write-Host ('共'+$gifs.Count+'个,转换完成...');}else{Write-Host '当前目录没有找到任何GIF文件!';};"
pause

用法

  • 另存为转换GIF到PNG-递归.bat文件,放在某个目录下,双击运行即可。会自动查找子目录中,转换后存于每个子目录的PNG目录中。

后记

有条件可以自行修改,支持更多格式(JPG等)。

——END——

    原文作者:HoKis
    原文地址: https://blog.csdn.net/HoKis/article/details/106133891
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞