如何通过Powershell创建位图

Loo*_*oom 3 .net powershell system.drawing image bitmap

我想学习使用Powershell创建/编辑图像.请帮助我创建位图图像,用一些颜色填充它,将某些像素的颜色设置为其他颜色并将图像保存到文件中.

编辑:我尝试了下面的代码,但得到了一个黑色的位图

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$bmp = New-Object System.Drawing.Bitmap(320, 240)

for ($i = 0; $i -lt 100; $i++)
{
   for ($j = 0; $j -lt 100; $j++)
   {
     $bmp.SetPixel($i, $j, 1000)
   }
}

$bmp.Save("f:\Temp\bmp.bmp")
ii f:\Temp\bmp.bmp
Run Code Online (Sandbox Code Playgroud)

lat*_*kin 7

SetPixel采用类型的最终参数System.Drawing.Color.Powershell将整数1000转换为Color对象,最终基本上是"黑色":

PS > [system.drawing.color] 1000

R             : 0
G             : 3
B             : 232
A             : 0       # A is "Alpha", aka opacity. A = 0 -> full transparent
IsKnownColor  : False
IsEmpty       : False
IsNamedColor  : False
IsSystemColor : False
Name          : 3e8
Run Code Online (Sandbox Code Playgroud)

您可以通过相应的字符串已知命名颜色(例如'Red'),或可以创建一个自定义的RGB色彩[System.Drawing.Color]::FromArgb($r, $g, $b)或者[System.Drawing.Color]::FromArgb($a, $r, $g, $b),所有的参数可以是从0到255的包容性.请参阅此处此处的文档.

for ($i = 0; $i -lt 100; $i++)
{
   for ($j = 0; $j -lt 100; $j += 2)
   {
     $bmp.SetPixel($i, $j, 'Red')
     $bmp.SetPixel($i, $j + 1, [System.Drawing.Color]::FromArgb(0, 100, 200))
   }
}
Run Code Online (Sandbox Code Playgroud)