5

我想学习使用 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
4

1 回答 1

8

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

您可以传递与已知命名颜色相对应的字符串(例如),或者从或中'Red'创建自定义 RGB 颜色,其中所有参数可以是 0 到 255(含)。请参阅此处此处的文档。[System.Drawing.Color]::FromArgb($r, $g, $b)[System.Drawing.Color]::FromArgb($a, $r, $g, $b)

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))
   }
}
于 2012-09-18T21:48:13.993 回答