El sistema Windows transforma por lotes las imágenes de la carpeta a baja resolución

Utilice PowerShell para recortar imágenes en lotes, y las imágenes de la carpeta se recortan a un tamaño específico en lotes y se guardan en otra carpeta.

Escriba y ejecute el archivo .ps1

Cree un nuevo documento de texto e ingrese el siguiente contenido:

# 指定原始图片所在的文件夹和输出路径
$sourceFolder = "C:\path\to\source\folder"
$outputFolder = "C:\path\to\output\folder"

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

# 获取指定文件夹中所有图片的文件名
$files = Get-ChildItem -Path $sourceFolder -Filter *.jpg

# 循环处理每个文件
foreach ($file in $files) {
    # 打开原始图片
    $image = [System.Drawing.Image]::FromFile($file.FullName)

    # 定义新的大小
    $newWidth = 100
    $newHeight = ($image.Height / $image.Width) * $newWidth
    $newSize = New-Object System.Drawing.Size($newWidth, $newHeight)

    # 创建一个新的Bitmap并绘制调整大小后的图片
    $resizedImage = New-Object System.Drawing.Bitmap($newSize.Width, $newSize.Height)
    $graphics = [System.Drawing.Graphics]::FromImage($resizedImage)
    $graphics.DrawImage($image, 0, 0, $newSize.Width, $newSize.Height)

    # 保存调整大小后的图片到指定输出路径
    $outputPath = Join-Path $outputFolder $file.Name
    $resizedImage.Save($outputPath)

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

El camino se modifica según la situación. Guárdelo como un archivo con el sufijo ".ps1", como "111.ps1". Abra PowerShell , ingrese ".\111.ps1" en la ruta "111.ps1" para ejecutar el archivo.

ejecutar con éxito

Efecto: imagen de 1080*2400 comprimida a 100*222

Explicación del código (no es importante, se recomienda omitirlo)

La explicación del código relevante proporcionada por GPT:

Ok, aquí hay una explicación del código:

```
# Cargar el espacio de nombres System.Drawing
Add-Type -AssemblyName System.Drawing
```

El código aquí utiliza el comando `Add-Type` de PowerShell para cargar el espacio de nombres `System.Drawing`. El espacio de nombres `System.Drawing` es uno de los componentes principales para dibujar gráficos bidimensionales en .NET Framework. En los scripts de PowerShell, si desea procesar imágenes, primero debe cargar este espacio de nombres.

```
# Definir nuevo tamaño
$newWidth = 500
$newHeight = ($image.Height / $image.Width) * $newWidth
$newSize = New-Object System.Drawing.Size($newWidth, $newHeight)
```

Este código define el nuevo tamaño de la imagen. Tomemos como ejemplo el ancho de 500 píxeles, calculemos la nueva altura de acuerdo con la relación de aspecto de la imagen original y luego usemos el tipo "System.Drawing.Size" para crear un nuevo objeto "Tamaño".

```
# Crea un nuevo mapa de bits y dibuja la imagen redimensionada
$resizedImage = New-Object System.Drawing.Bitmap($newSize.Width, $newSize.Height)
$graphics = [System.Drawing.Graphics]:: FromImage($ imagenresimensionada)
$graphics.DrawImage($imagen, 0, 0, $newSize.Width, $newSize.Height)
```

Este código crea un nuevo objeto Bitmap usando el tipo `System.Drawing.Bitmap` y luego crea un objeto Graphics asociado con el Bitmap usando el tipo `System.Drawing.Graphics`. Luego usamos el método `DrawImage()` para dibujar la imagen redimensionada en este mapa de bits.

```
# Guarde la imagen redimensionada en la ruta de salida especificada
$outputPath = Join-Path $outputFolder $file.Name
$resizedImage.Save($outputPath)
```

Este código guarda la imagen redimensionada en la ruta de salida especificada. Usamos el comando `Join-Path` integrado de PowerShell para concatenar la carpeta de salida y el nombre de archivo de la imagen original, y luego usamos el método `Save()` del objeto Bitmap para guardar el mapa de bits como un archivo de imagen.

```
# Liberar recursos
$image.Dispose()
$resizedImage.Dispose()
$graphics.Dispose()
```

Finalmente, este código llama al método `Dispose()` de cada objeto Bitmap para liberar todos los recursos asociados con ese objeto, asegurando que no haya pérdidas de memoria. Tenga en cuenta que necesitamos liberar recursos en el siguiente orden: primero liberar el objeto Gráficos, luego liberar el objeto Bitmap y finalmente liberar el objeto Imagen (es decir, la imagen original).

reportar error

Variación de profundidad de bits de imagen

El formato de la imagen de salida se puede mantener sin cambios especificando explícitamente el parámetro PixelFormat.

Al crear un nuevo objeto Bitmap, especifique explícitamente el parámetro PixelFormat como Format24bppRgb para mantener sin cambios la profundidad de bits de la imagen de salida. Al mismo tiempo, también es necesario especificar el formato JPEG al guardar la imagen para garantizar que el formato de la imagen de salida sea correcto.

existir

$resizedImage =Nuevo-Objeto System.Drawing.Bitmap($newSize.Width, $newSize.Height, [System.Drawing.Imaging.PixelFormat]::Format24bppRgb)

Una modificación. 

Efecto:

 

Otro error

Para conocer los comandos de ejecución de PowerShell, los errores comunes y su manejo, consulte:

Errores comunes y manejo de los comandos de ejecución de PowerShell del sistema Windows - Blog de Weixin_56337147 - Blog de CSDN

Resumir 

Escriba y ejecute archivos .ps1 para lograr modificaciones por lotes

Supongo que te gusta

Origin blog.csdn.net/weixin_56337147/article/details/130754407
Recomendado
Clasificación