使用PowerShell获取图像的调色板

我正在尝试获取图像的Color Palette 。 我尝试了各种方法,现在我在PowerShell使用下面的代码,但是我无法得到正确的结果:

 $filename = "C:\Users\schoo\Desktop\bb.jpg" $BitMap = [System.Drawing.Bitmap]::FromFile((Get-Item $filename).fullname) Foreach($y in (1..($BitMap.Height-1))){ Foreach($x in (1..($BitMap.Width-1))){ $Pixel = $BitMap.GetPixel($X,$Y) $BackGround = $Pixel.Name } $R = $Pixel | select -ExpandProperty R $G = $Pixel | select -ExpandProperty G $B = $Pixel | select -ExpandProperty B $A = $Pixel | select -ExpandProperty A $allClr = "$R" + "." + "$G" + "." + "$B" + "." + "$A" $allClr } 

结果带给我超过千个RGB代码: 错误的结果

我认为“调色板”是指图像中出现的大量不同颜色。

一个简单(而且相当快速)的方式来选择只有一个集合的不同的子集是使用哈希表。

 $filename = 'C:\Users\schoo\Desktop\bb.jpg' $BitMap = [System.Drawing.Bitmap]::FromFile((Resolve-Path $filename).ProviderPath) # A hashtable to keep track of the colors we've encountered $table = @{} foreach($h in 1..$BitMap.Height){ foreach($w in 1..$BitMap.Width) { # Assign a value to the current Color key $table[$BitMap.GetPixel($w - 1,$h - 1)] = $true } } # The hashtable keys is out palette $palette = $table.Keys