本文目录
背景
循环调用了上一篇文章中的截屏函数,生成了许多截屏图片。每一张图片的有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
即可