$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot Add-Type -AssemblyName System.Drawing $assets = @( 'static/assets/icons/common/location-v1.png', 'static/assets/icons/common/member-meta-v1.png', 'static/assets/icons/common/admin-v1.png', 'static/assets/icons/genealogy/seal-current-frame-v1.png', 'static/assets/icons/genealogy/seal-row-frame-v1.png', 'static/assets/icons/action/create-cloud-v2.png' ) foreach ($asset in $assets) { $bitmap = [System.Drawing.Bitmap]::FromFile((Join-Path $root $asset)) $width = [int]$bitmap.Width $height = [int]$bitmap.Height $corners = @( $bitmap.GetPixel(0, 0).A, $bitmap.GetPixel(($width - 1), 0).A, $bitmap.GetPixel(0, ($height - 1)).A, $bitmap.GetPixel(($width - 1), ($height - 1)).A ) $visiblePixels = 0 for ($y = 0; $y -lt $height; $y++) { for ($x = 0; $x -lt $width; $x++) { if ($bitmap.GetPixel($x, $y).A -gt 24) { $visiblePixels++ } } } $bitmap.Dispose() if (($corners | Where-Object { $_ -ne 0 }).Count -ne 0) { throw "$asset has opaque outer corners." } if ($visiblePixels -lt 80) { throw "$asset has no usable visible artwork." } Write-Output "PASS $asset transparent corners and visible artwork" }