本文目录
背景
循环调用了上一篇文章中的截屏函数,生成了许多截屏图片。每一张图片的有5M左右,稍微有点浪费资源,于是我想到了使用PowerShell 批量缩放图片。
实现功能
- 按照指定像素缩放图片
- 安装百分比缩放图片
- 支持管道批量缩放图片
脚本
<# .Synopsis 批量缩放图片 .DESCRIPTION 根据百分比或者像素大小缩放图片 .EXAMPLE 'C:\1.png' | Resize-Image -Percent -Percentage 0.8 将图片1.png缩放至80% .EXAMPLE 'C:\1.png' | Resize-Image -Pixels -Width 600 -Height 400 将图片1.png缩放至600X400像素 .EXAMPLE dir $home\Pictures\*png | Resize-Image -Percent -Percentage 0.5 将'我的图片'下的所有png图片缩放至50% .NOTES 作者: Mosser Lee 原文链接: https://www.pstips.net/resize-image.html #> Function Resize-Image { param ( [Switch]$Percent, [float]$Percentage, [Switch]$Pixels, [int]$Width, [int]$Height ) begin { if( $Percent -and $Pixels) { Write-Error "按照百分比(Percent)或者分辨率(Pixels)缩放,只能任选其一奥!" break } elseif($Percent) { if($Percentage -le 0) { Write-Error "参数Percentage的值必须大于0!" break } } elseif($Pixels) { if( ($Width -lt 1) -or ($Height -lt 1)) { Write-Error "参数Width和Height的值必须大于等于1!" break } } else { Write-Error "请选择按照百分比(-Percent)或者分辨率(-Pixels)缩放!" break } Add-Type -AssemblyName 'System.Windows.Forms' $count=0 } process { $img=[System.Drawing.Image]::FromFile($_) # 按百分比重新计算图片大小 if( ($Percentage -gt 0) -and ($Percentage -ne 1.0) ) { $Width = $img.Width * $Percentage $Height = $img.Height * $Percentage } # 缩放图片 $size = New-Object System.Drawing.Size($Width,$Height) $bitmap = New-Object System.Drawing.Bitmap($img,$size) # 保存图片 $img.Dispose() $bitmap.Save($_) $bitmap.Dispose() $count++ } end { "完毕,共处理 $count 了个文件" } }
后记
有了这么多图片,是不是把它拼在一起,就是一个Gif动画了,所以下一篇文章“使用PowerShell合成Gif动画”呼之欲出。
本文链接: https://www.pstips.net/resize-image.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
广播: 使用PowerShell合成Gif动画 | PowerShell 中文博客
我这边在调整一些图片时报错。
Exception calling “Save” with “1” argument(s): “A generic error occurred in GDI+.”
At line:80 char:9
+ $bitmap.Save($_)
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ExternalException
Version : 5.0.10586.117
学到,用上了,谢谢
能分享一下怎么用的吗?
博主你好,请问这个怎么使用?
自问自答吧
Import-Model xxx.ps1
即可