当前位置: 首页 > news >正文

powershell 实现批量把文件夹下的bmp文件转换为jpg

以下是一个使用PowerShell将BMP图像批量转换为JPG(质量85)的脚本:

<#
.SYNOPSIS批量将BMP图像转换为JPG格式(质量85)
.DESCRIPTION此脚本会遍历指定文件夹中的所有BMP文件,并将它们转换为JPG格式,质量为85
.PARAMETER SourcePath包含BMP文件的源文件夹路径
.PARAMETER DestinationPath输出JPG文件的目标文件夹路径(可选,默认为源文件夹)
.EXAMPLE.\Convert-BmpToJpg.ps1 -SourcePath "C:\Images" -DestinationPath "C:\ConvertedImages"
#>param([Parameter(Mandatory=$true)][string]$SourcePath,[string]$DestinationPath = $SourcePath
)# 加载必要的程序集
Add-Type -AssemblyName System.Drawing# 创建目标目录(如果不存在)
if (!(Test-Path -Path $DestinationPath)) {New-Item -ItemType Directory -Path $DestinationPath | Out-Null
}# 获取所有BMP文件
$bmpFiles = Get-ChildItem -Path $SourcePath -Filter "*.bmp"# 设置JPEG编码器参数(质量85)
$encoder = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | Where-Object { $_.FormatDescription -eq "JPEG" }
$encoderParams = New-Object System.Drawing.Imaging.EncoderParameters(1)
$encoderParams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter([System.Drawing.Imaging.Encoder]::Quality, 85)# 转换每个文件
foreach ($file in $bmpFiles) {try {$inputPath = $file.FullName$outputPath = Join-Path -Path $DestinationPath -ChildPath ($file.BaseName + ".jpg")Write-Host "正在转换: $($file.Name) -> $($file.BaseName).jpg"# 读取BMP文件$image = [System.Drawing.Image]::FromFile($inputPath)# 保存为JPG$image.Save($outputPath, $encoder, $encoderParams)# 释放资源$image.Dispose()Write-Host "转换完成: $($file.BaseName).jpg" -ForegroundColor Green}catch {Write-Host "转换 $($file.Name) 时出错: $_" -ForegroundColor Red}
}Write-Host "所有转换操作已完成!" -ForegroundColor Cyan

使用说明:

  1. 将上述代码保存为.ps1文件,例如Convert-BmpToJpg.ps1

  2. 在PowerShell中运行脚本:

    .\Convert-BmpToJpg.ps1 -SourcePath "C:\YourBmpFolder" -DestinationPath "C:\OutputFolder"
    

    (如果省略-DestinationPath参数,输出文件将保存在源文件夹中)

  3. 脚本会处理指定文件夹中的所有.bmp文件,并将它们转换为质量为85的.jpg文件

注意事项:

  • 需要.NET Framework支持(通常Windows系统都已安装)
  • 原始BMP文件不会被删除
  • 如果目标文件夹中有同名JPG文件,它们会被覆盖
  • 转换大文件可能需要一些时间

如果需要调整JPG质量,可以修改$encoderParams.Param[0]中的85为其他值(1-100)。

http://www.dtcms.com/a/298861.html

相关文章:

  • 操作系统:设计与实现(Operating System Design Implementation)
  • deepseek本地部署,轻松实现编程自由
  • 小架构step系列25:错误码
  • 储粮温度预测新方案!FEBL模型用代码实现:LSTM+注意力+岭回归的完整流程
  • 【map计算】自定义map计算
  • KNN 算法进阶:从基础到优化的深度解析
  • GaussDB 数据库架构师修炼(九) 逻辑备份实操
  • 动态规划Day1学习心得
  • JavaWeb项目(纯Servlet+JSP+前端三大件)入门(从0开始)
  • JavaSE-图书信息管理系统
  • jwt 在net9.0中做身份认证
  • 2507C++,窗口勾挂事件
  • IPv6,你开始使用了吗?
  • MATLAB 设置默认启动路径为上次关闭路径的方法
  • Linux C : 指针
  • ZYNQ芯片,SPI驱动开发自学全解析个人笔记【FPGA】【赛灵思】
  • 您的需求已被采纳
  • 【51单片机简易红绿灯计数延时】2022-9-23
  • AIStarter平台亮点解析:从ComfyUI项目上架到一键运行的完整指南
  • I/O多路复用机制中触发机制详细解析
  • 数字化转型-AI落地金字塔法则
  • 【补题】Codeforces Round 735 (Div. 2) B. Cobb
  • 卡尔曼滤波器噪声方差设置对性能影响的仿真研究
  • 【LeetCode刷题指南】--有效的括号
  • K-近邻算法中的近似误差和估计误差
  • Win11批量部署神器winget
  • SQL基础⑯ | MySQL8新特性篇
  • JDK8保姆级安装教程
  • 新房装修是中央空调还是壁挂空调好?
  • 安卓上的迷之K_1171477665