请求修改PowerShell脚本:统计图片颜色数并忽略Alpha通道
修改PowerShell脚本忽略Alpha通道统计图片颜色数
我正在为老游戏《Recoil》制作高清纹理Mod,需要批量获取数千张图片的宽度、高度、像素格式及颜色数,以便导入Excel筛选适合Upscale的纹理。
目前已通过PowerShell脚本获取到图片的宽高和像素格式,但添加颜色数统计后,结果与Photoshop颜色计数工具存在差异——Photoshop会忽略Alpha通道,而当前脚本会统计包含Alpha通道的像素颜色,仅Format32bppArgb格式有此问题,Format24bppRgb格式统计正常。需要修改脚本,使其统计颜色数时忽略Alpha通道,同时保留批量处理文件夹内所有图片的能力。
修改后的完整脚本
Function Get-Image{ Param( [Parameter(ValueFromPipeline=$true)] [System.IO.FileInfo]$file ) begin{ [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null } process{ if( $file.Exists){ $img = [System.Drawing.Image]::FromFile($file) $image = $img.Clone() $img.Dispose() # 统计颜色(忽略Alpha通道) $colorSet = [System.Collections.Generic.HashSet[System.Drawing.Color]]::new() foreach ($x in 0..($image.Width - 1)) { foreach ($y in 0..($image.Height - 1)) { $originalColor = $image.GetPixel($x, $y) # 创建仅保留RGB的颜色对象,固定Alpha为255以忽略通道差异 $rgbOnlyColor = [System.Drawing.Color]::FromArgb(255, $originalColor.R, $originalColor.G, $originalColor.B) [void]$colorSet.Add($rgbOnlyColor) } } # 为图片对象添加文件名和颜色计数属性 $image | Add-Member -MemberType NoteProperty -Name Filename -Value $file.FullName -PassThru | Add-Member -MemberType NoteProperty -Name ColorCount -Value $colorSet.Count -PassThru }else{ Write-Host "File not found: $file" -ForegroundColor yellow } } end{} } # 批量处理示例(替换为你的图片路径) # 递归遍历指定文件夹下所有PNG图片,输出统计信息 Get-ChildItem "D:\Games\Setups\RECOIL_fixed_edition_v0.5\SourceFile\zbd\Dataset_D\Dataset_D\ammoarcgun\*.png" -Recurse | Get-Image | Select-Object filename, Width, Height, PixelFormat, ColorCount | Format-Table -AutoSize # 可选:导出结果到Excel(需先安装ImportExcel模块:Install-Module -Name ImportExcel) # Get-ChildItem "你的图片根路径\*.png" -Recurse | Get-Image | Select-Object filename, Width, Height, PixelFormat, ColorCount | Export-Excel -Path "图片纹理信息.xlsx" -AutoSize
关键修改说明
- 在获取每个像素颜色后,通过
[System.Drawing.Color]::FromArgb(255, $originalColor.R, $originalColor.G, $originalColor.B)生成新的颜色对象,固定Alpha通道为255,仅保留RGB信息,这样统计颜色时会忽略Alpha通道的差异,和Photoshop的计数逻辑对齐。 - 保留了原脚本的批量处理能力,支持通过
-Recurse参数递归遍历子文件夹内的所有图片。
内容的提问来源于stack exchange,提问作者TheDaemonSultan
相关产品推荐
相关产品推荐

