Windows系统使用powershell裁剪图片为指定大小

目录

编写运行.ps1文件

代码解释(不重要,建议跳过)

设置裁剪框的大小和位置

报错

总结 


使用powershell裁剪图片,把原图片的120-290像素裁剪出来

编写运行.ps1文件

新建文本文档,输入如下内容:

# 指定原始图片路径和输出路径
$sourcePath = "C:\path\to\original\image.jpg"
$outputPath = "C:\path\to\output\image.jpg"

# 加载System.Drawing命名空间
Add-Type -AssemblyName System.Drawing

# 打开原始图片
$image = [System.Drawing.Image]::FromFile($sourcePath)

# 设置裁剪框的大小和位置
$cropRectangle = New-Object System.Drawing.Rectangle(120, 0, 170, $image.Height)

# 创建一个新的Bitmap并把裁剪后的部分绘制到Bitmap中
$croppedImage = New-Object System.Drawing.Bitmap($cropRectangle.Width, $cropRectangle.Height)
$graphics = [System.Drawing.Graphics]::FromImage($croppedImage)
$graphics.DrawImage($image, 0, 0, $cropRectangle, [System.Drawing.GraphicsUnit]::Pixel)

# 保存裁剪后的图片
$croppedImage.Save($outputPath)

# 释放资源
$image.Dispose()
$croppedImage.Dispose()
$graphics.Dispose()

路径根据情况修改。代码中的“$source”Path和“$outputPath”分别代表原图的路径和截图后的图片路径,根据需求设定。

保存为“.ps1”为后缀的文件,如“111.ps1”。打开powershell,在“111.ps1”的路径下输入“ .\111.ps1”,执行该文件。

代码解释(不重要,建议跳过)

GPT给出的相关代码解释:

当然,我很乐意为你解释每行PowerShell代码的作用:

```
# 指定原始图片路径和输出路径
$sourcePath = "C:\path\to\original\image.jpg"
$outputPath = "C:\path\to\output\image.jpg"

# 加载System.Drawing命名空间
Add-Type -AssemblyName System.Drawing
```
这两行是用来指定原始图片的路径和输出路径,以及导入System.Drawing命名空间。后面我们会用到这个命名空间里的类和方法进行图片处理。

```
# 打开原始图片
$image = [System.Drawing.Image]::FromFile($sourcePath)
```
通过调用`System.Drawing.Image`类的`FromFile()`方法,我们可以打开原始图片,并将其赋值给一个变量`$image`。

```
# 设置裁剪框的大小和位置
$cropRectangle = New-Object System.Drawing.Rectangle(120, 0, 170, $image.Height)
```
这一行代码设置了裁剪框的大小和位置。在本例中,我们从原始图片中裁剪出宽度为170像素,高度与原始图片一致,位置从120像素开始的部分。这个裁剪框使用`System.Drawing.Rectangle`类创建。

```
# 创建一个新的Bitmap并把裁剪后的部分绘制到Bitmap中
$croppedImage = New-Object System.Drawing.Bitmap($cropRectangle.Width, $cropRectangle.Height)
$graphics = [System.Drawing.Graphics]::FromImage($croppedImage)
$graphics.DrawImage($image, 0, 0, $cropRectangle, [System.Drawing.GraphicsUnit]::Pixel)
```
这三行是用来创建一个新的Bitmap,并将裁剪后的部分绘制到Bitmap中。我们通过`System.Drawing.Bitmap`类创建一个新的Bitmap对象,并将其赋值给`$croppedImage`变量。然后,我们使用`System.Drawing.Graphics`类从Bitmap中创建一个新的Graphics对象,并将其赋值给`$graphics`变量。最后,我们使用`$graphics.DrawImage()`方法绘制原始图片中的指定区域(即裁剪框)到新的Bitmap中。

```
# 保存裁剪后的图片
$croppedImage.Save($outputPath)

# 释放资源
$image.Dispose()
$croppedImage.Dispose()
$graphics.Dispose()
```
这三行代码是用来保存裁剪后的图片,并释放所有占用的资源。我们使用`$croppedImage.Save()`方法来保存裁剪后的图片到指定输出路径。最后,我们使用`Dispose()`方法释放`$image`、`$croppedImage`、以及`$graphics`对象所占用的所有资源。

设置裁剪框的大小和位置

$cropRectangle = New-Object System.Drawing.Rectangle(`X` , `Y` ,`Width`, `Height` ) 

`New-Object System.Drawing.Rectangle`类允许我们创建一个矩形对象,用于指定图像中需要裁剪的区域。它有以下四个参数:

1. `X` 参数表示该矩形左上角的位置的 x 坐标。
2. `Y` 参数表示该矩形左上角的位置的 y 坐标。
3. `Width` 参数表示矩形的宽度。
4. `Height` 参数表示矩形的高度。

因此,如果你想裁剪原始图片的左上角的150×150像素部分,可以这样设置裁剪框的大小和位置:

```
$cropRectangle = New-Object System.Drawing.Rectangle(0, 0, 150, 150)
```

如果你想从原始图片的右侧开始的200像素的位置裁剪出400x300像素大小的图片,可以这样设置:

```
$cropRectangle = New-Object System.Drawing.Rectangle($image.Width - 200 - 400, 0, 400, 300)
```

其中,`$image.Width`是原始图片的宽度,我们从右侧开始计算偏移量,然后设置裁剪框的宽度和高度。总之,根据实际情况,你可以自定义设置裁剪框的位置和大小。

 $image.Width表示原图的宽度, $image.Height表示原图的高度。这些变量也可以用于图片大小设置。

举例说明:

有一原图,宽350像素,高260像素,要想将其时间部分裁剪出来,先预选这一区域像素。

这一区域像素从(153,55)开始,高33,宽94

# 设置裁剪框的大小和位置
$cropRectangle = New-Object System.Drawing.Rectangle(153, 55, 94, 33)

截图效果:

 图片的宽度高度的单位均为像素,使用“画图”等软件可以查看。

报错

powershell运行指令,常出现的报错及处理参见:

Windows系统powershell运行指令常见报错及处理_weixin_56337147的博客-CSDN博客

总结 

编写运行.ps1文件,实现裁剪图片的功能。

猜你喜欢

转载自blog.csdn.net/weixin_56337147/article/details/130753933
今日推荐