xlogI125’s blog

パソコン作業を効率化したい

PowerShell練習 画像ファイルを作成

メモ

テスト用に画像ファイルを作成する

使い捨てスクリプト

# PowerShell 5.1, Windows 11

using assembly System.Drawing
using namespace System.Drawing

# 解像度
$dpi = 150

# A4横(ヨコ297mm×タテ210mm)
$pxWidth = 297 / 25.4 * $dpi
$pxHeight = 210 / 25.4 * $dpi

$bmp = [Bitmap]::new(
  $pxWidth, $pxHeight, [Imaging.PixelFormat]::Format24bppRgb)

$bmp.SetResolution($dpi, $dpi)

$rnd = [Random]::new()

$g = [Graphics]::FromImage($bmp)

for ($pxY = 0; $pxY -lt $pxHeight; $pxY++) {

  # 進捗状況の表示
  if ( ($pxY % 10) -eq 0 ) {
    $str1 = [String]::Format("{0,4:0}", $pxY)
    $str2 = [String]::Format("{0,4:0}", $pxHeight)

    Write-Host "$str1 / $str2"
  }

  for ($pxX = 0; $pxX -lt $pxWidth; $pxX++) {

    # 特定の位置を白色にする
    if ( (($pxY % 2) -eq 0) -and (($pxX % 2) -eq 0) ) {
      $pen = [Pen]::new([SolidBrush]::new([Color]::FromArgb(
        255, 255, 255)))
    }
    else {
      $colorR = $rnd.Next(256)
      $colorG = $rnd.Next(256)
      $colorB = $rnd.Next(256)

      $pen = [Pen]::new([SolidBrush]::new([Color]::FromArgb(
        $colorR, $colorG, $colorB)))
    }

    $g.DrawRectangle($pen, $pxX, $pxY, 1, 1)
  }
}

$g.Dispose()

$bmp.Save(
  "${env:USERPROFILE}\Desktop\tmp\画像.tif", 
  [Imaging.ImageFormat]::Tiff)

$bmp.Dispose()