# Avatar-Thumbnails generieren — original PNGs bleiben, Thumbs als WebP 256x256. # Idempotent. Re-Run: powershell -ExecutionPolicy Bypass -File "App\Don_t_Deploy\build-avatar-thumbs.ps1" $ErrorActionPreference = 'Stop' $src = Join-Path $PSScriptRoot '..\assets\img\avatars' $dst = Join-Path $src 'thumbs' if (-not (Test-Path $dst)) { New-Item -ItemType Directory -Path $dst | Out-Null } $mg = (Get-Command magick -ErrorAction SilentlyContinue).Source if (-not $mg) { $candidate = 'C:\Program Files\ImageMagick-7.1.2-Q16-HDRI\magick.exe' if (Test-Path $candidate) { $mg = $candidate } } if (-not $mg) { Write-Error 'ImageMagick fehlt'; exit 1 } $created = 0; $skipped = 0; $failed = 0; $origSize = 0; $thumbSize = 0 Get-ChildItem -Path $src -Filter 'avatar-*.png' | ForEach-Object { $orig = $_.FullName $thumb = Join-Path $dst ([System.IO.Path]::GetFileNameWithoutExtension($_.Name) + '.webp') $origSize += $_.Length if ((Test-Path $thumb) -and ((Get-Item $thumb).LastWriteTime -gt $_.LastWriteTime)) { $thumbSize += (Get-Item $thumb).Length $skipped++ return } & $mg $orig -resize '256x256^' -gravity center -extent 256x256 -quality 82 $thumb if ($LASTEXITCODE -eq 0 -and (Test-Path $thumb)) { $thumbSize += (Get-Item $thumb).Length $created++ Write-Host (' ok ' + $_.Name) } else { $failed++ Write-Warning (' fail ' + $_.Name) } } $origMB = [math]::Round($origSize / 1MB, 2) $thumbKB = [math]::Round($thumbSize / 1KB, 1) Write-Host '' Write-Host ('Thumbs erstellt: ' + $created + ' neu, ' + $skipped + ' geskippt, ' + $failed + ' Fehler') Write-Host ('Originale: ' + $origMB + ' MB | Thumbs: ' + $thumbKB + ' KB')