PowerShell批量缩放图片 6


背景

循环调用了上一篇文章中的截屏函数,生成了许多截屏图片。每一张图片的有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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

6 条评论 “PowerShell批量缩放图片