49 lines
1.6 KiB
PowerShell
49 lines
1.6 KiB
PowerShell
# Path of the folder to analyze
|
|
$folderPath = "\\192.168.0.3\web\blog\wp-content\uploads-webpc"
|
|
|
|
# Function to compress images for web use
|
|
function Compress-Image {
|
|
param (
|
|
[string]$imagePath
|
|
)
|
|
|
|
# Create a temporary path for the compressed version
|
|
$tempImagePath = "$($imagePath).temp"
|
|
|
|
# Compress the image based on its type
|
|
if ($imagePath -match "\.png$") {
|
|
# PNG compression via ImageMagick (adjusting for better web performance)
|
|
& magick $imagePath -strip -quality 85 -define png:compression-level=9 $tempImagePath
|
|
} elseif ($imagePath -match "\.webp$") {
|
|
# WebP lossy compression for web (adjusting quality for web use)
|
|
& magick $imagePath -strip -quality 75 $tempImagePath
|
|
} else {
|
|
Write-Host "Unsupported format: $imagePath"
|
|
return
|
|
}
|
|
|
|
# Compare the file sizes
|
|
$originalSize = (Get-Item $imagePath).Length
|
|
$compressedSize = (Get-Item $tempImagePath).Length
|
|
|
|
if ($compressedSize -lt $originalSize) {
|
|
# Replace the original image with the compressed version if it's smaller
|
|
Move-Item $tempImagePath $imagePath -Force
|
|
Write-Host "Compression successful: $imagePath ($originalSize -> $compressedSize bytes)"
|
|
} else {
|
|
# Delete the temporary image if it's not smaller
|
|
Remove-Item $tempImagePath
|
|
Write-Host "No size reduction: $imagePath"
|
|
}
|
|
}
|
|
|
|
# Get all PNG and WebP files in the folder and subfolders
|
|
$images = Get-ChildItem -Path $folderPath -Recurse -Include *.png, *.webp
|
|
|
|
# Loop to compress each image
|
|
foreach ($image in $images) {
|
|
Compress-Image -imagePath $image.FullName
|
|
}
|
|
|
|
Write-Host "Compression completed."
|